Podcasts about Rake

Share on
Share on Facebook
Share on Twitter
Share on Reddit
Copy link to clipboard
  • 676PODCASTS
  • 971EPISODES
  • 53mAVG DURATION
  • 5WEEKLY NEW EPISODES
  • Oct 23, 2021LATEST

POPULARITY

20112012201320142015201620172018201920202021


Best podcasts about Rake

Latest podcast episodes about Rake

Soccer Saturday - INDY ELEVEN for 10/23/21

"Soccer Saturday" featuring Indy Eleven

Play Episode Listen Later Oct 23, 2021 60:22


(00:00-01:57) - Greg Rakestraw is back with another edition of Soccer Saturday and opens up the show with the Indy Eleven officially being eliminated from post-season contention and previews topics that he will cover throughout the show. (04:59-15:08) - Interim Head Coach Max Rogers of the Indy Eleven makes his weekly appearance on Soccer Saturday with Greg Rakestraw to share his excitement on the team putting together a full match against Louisville City last week, how the team has approached this week knowing their season ends the night before Halloween, and breaks down FC Tulsa ahead of their match tonight. (18:09-33:02) - Jeff Rueter from The Athletic makes his second appearance of the season on Soccer Saturday with Greg Rakestraw to explain the confidence meter with United States Men's National Coach Gregg Berhalter, who could possibly replace Berhalter if the USMNT decides to part ways with him, and details what next year for the USL looks like in terms of number of teams. (36:04-48:09) - Brebeuf Jesuit's girls' soccer coach Angela White joins Rake on Soccer Saturday to highlight the injuries her team has while making a run to win the state championship for girls soccer, how the team has been able to adapt the last month of the season for the post-season started, and previews tonight's semi-state match against Evansville Memorial. (51:11-57:21) - Our final guest of today's show is Dave Piercefield from the Central Indiana Honda Dealers to explain why the partnership with the Indy Eleven is such a good relationship, how business is going right now for Honda, and how they were able to stay afloat during the tough times this year.

The DoomBots Podcast
Episode 34: Slender Man, Siren Head and the SCP Foundation (Oh My!)

The DoomBots Podcast

Play Episode Listen Later Oct 23, 2021


Just in time for Halloween, we're looking at the origins, lore and legacies of the internet's more captivatingly terrifying monsters, from Slender Man to the horrifying pantheon of Trevor Henderson's creations and beyond!

Cheat Code Sports Fantasy Football Podcast
DFS Week 7 Time To Rake In Some Cash

Cheat Code Sports Fantasy Football Podcast

Play Episode Listen Later Oct 23, 2021 50:21


Stevie P breaks down the DFS landscape for week seven let's make that money y'all. --- This episode is sponsored by · Anchor: The easiest way to make a podcast. https://anchor.fm/app --- Send in a voice message: https://anchor.fm/steven-perez74/message

Splash Play - Fantasy Football Podcast
Week 7 Ride Or Die Picks And Best Ball Regrets With Ben Gretch

Splash Play - Fantasy Football Podcast

Play Episode Listen Later Oct 22, 2021 77:47


Ben Gretch joins Pete and Spags to discuss the latest injury news, Week 7 NFL DFS picks, and give out Ride or Die hot takes for every Week 7 game. 🐦 Gretch ➝ https://twitter.com/yardspergretch Splash Play presented by Football Outsiders, subscribe to FO+ at http://footballoutsiders.com/subscribe, Go to http://edjsports.com to compare betting lines with the power of 100,000+ simulations. 🐦 Spags ➝ https://twitter.com/chrisspags 🏆 Week 7 Rake free $10, single entry GPP on Draftkings ➝ https://www.draftkings.com/draft/contest/115498130 🔴 Subscribe to Splash Play ➝ https://www.youtube.com/channel/UCtocTNLM4KH8UiEOHjOvt2Q?sub_confirmation=1 🔴 Get the audio version on iTunes ➝ https://podcasts.apple.com/us/podcast/splash-play-fantasy-football-podcast/id1531045853! ► Follow Splash Play! First 1,000 followers get followed back! http://twitter.com/splashplaypod http://instagram.com/splashplaypod 📈 Run The Sims ➝ https://www.runthesims.com/pete/ Get 10% off any package with promo code 'Pete'. All Run The Sims subs who use promo code Pete get access to a private DFS channel within the Deposit Kingdom discord: https://discord.gg/XD27Cw9J5A 👑 Want a free $10 on Underdog? Use promo code 'Pete' when you deposit for a $10 bonus ➝ https://play.underdogfantasy.com/p-pete-overzet 🎁 Randomizer Merch Boxes ➝ https://overzet.myshopify.com/ Randomizer Merch boxes are available now. It's the ultimate merch box for drinkers and drafters this summer. Box includes a $25 on Underdog Fantasy, a shot glass, koozie, coaster, raffle tix & much more. Use Promo Code Pete for FREE shipping. Want access to a best ball discord channel, private drafts, and custom badges and emotes on Youtube? 🔴 Step 1: Join the Deposit Kingdom discord ➝ https://discord.gg/tbAxDQ4 🎡 Step 2: Become Randomizer Royalty ➝ https://www.youtube.com/channel/UCDsGKh5UT53E1wfmzDTIl1w/join 🐦 Twitter ➝ https://twitter.com/peteroverzet 🎧 In A Vacuum (A Pete Overzet podcast) ➝ https://anchor.fm/peter-overzet 🔴 Subscribe to Youtube channel ➝ https://www.youtube.com/c/peteroverzet?sub_confirmation=1 👕 Merch ➝ https://overzet.myshopify.com/ 💻 Website ➝ http://peteroverzet.com/ ✍️ Fantasy Life Newsletter ➝ https://fantasylife.com/blogs/newsletter 💰 Follow my bets on Betsperts ➝ betsperts1.onelink.me/kpZN/Pete 🤑 Manzcoin NFTz ➝ https://opensea.io/collection/manzcoin-nftz #week7nfldfspicks #fantasyfootball #draftkings

The Morning Mix
Here's why you should NOT rake those leaves

The Morning Mix

Play Episode Listen Later Oct 22, 2021 1:57


Save time and energy for something else! See omnystudio.com/listener for privacy information.

Frank Sontag
10/18/21 - Big Wave Dave Interviews Dr. Christopher Rake on Covid Vaccine Mandates Cont'd

Frank Sontag

Play Episode Listen Later Oct 18, 2021 43:39


See omnystudio.com/listener for privacy information.

Frank Sontag
10/18/21 - Big Wave Dave Interviews Dr. Christopher Rake on Covid Vaccine Mandates

Frank Sontag

Play Episode Listen Later Oct 18, 2021 42:28


See omnystudio.com/listener for privacy information.

Splash Play - Fantasy Football Podcast
CAGEMATCH Low Ball With Al Zeidenfeld And Week 6 Ride or Die Picks!

Splash Play - Fantasy Football Podcast

Play Episode Listen Later Oct 15, 2021 67:32


ESPN's Al Zeidenfeld joins Pete and Spags to play a lowball variation of his Cagematch H2H DFS format and give out Ride or Die Week 6 NFL DFS picks for all of the Sunday games. 🐦 Smizz ➝ https://twitter.com/AlZeidenfeld Splash Play presented by Football Outsiders, subscribe to FO+ at http://footballoutsiders.com/subscribe, Go to http://edjsports.com to compare betting lines with the power of 100,000+ simulations. 🐦 Spags ➝ https://twitter.com/chrisspags 🏆 Week 6 Rake free $10, single entry GPP on Draftkings ➝ https://www.draftkings.com/draft/contest/115498130 🔴 Subscribe to Splash Play ➝ https://www.youtube.com/channel/UCtocTNLM4KH8UiEOHjOvt2Q?sub_confirmation=1 🔴 Get the audio version on iTunes ➝ https://podcasts.apple.com/us/podcast/splash-play-fantasy-football-podcast/id1531045853! ► Follow Splash Play! First 1,000 followers get followed back! http://twitter.com/splashplaypod http://instagram.com/splashplaypod 📈 Run The Sims ➝ https://www.runthesims.com/pete/ Get 10% off any package with promo code 'Pete'. All Run The Sims subs who use promo code Pete get access to a private DFS channel within the Deposit Kingdom discord: https://discord.gg/XD27Cw9J5A 👑 Want a free $10 on Underdog? Use promo code 'Pete' when you deposit for a $10 bonus ➝ https://play.underdogfantasy.com/p-pete-overzet 🎁 Randomizer Merch Boxes ➝ https://overzet.myshopify.com/ Randomizer Merch boxes are available now. It's the ultimate merch box for drinkers and drafters this summer. Box includes a $25 on Underdog Fantasy, a shot glass, koozie, coaster, raffle tix & much more. Use Promo Code Pete for FREE shipping. Want access to a best ball discord channel, private drafts, and custom badges and emotes on Youtube? 🔴 Step 1: Join the Deposit Kingdom discord ➝ https://discord.gg/tbAxDQ4 🎡 Step 2: Become Randomizer Royalty ➝ https://www.youtube.com/channel/UCDsGKh5UT53E1wfmzDTIl1w/join 🐦 Twitter ➝ https://twitter.com/peteroverzet 🎧 In A Vacuum (A Pete Overzet podcast) ➝ https://anchor.fm/peter-overzet 🔴 Subscribe to Youtube channel ➝ https://www.youtube.com/c/peteroverzet?sub_confirmation=1 👕 Merch ➝ https://overzet.myshopify.com/ 💻 Website ➝ http://peteroverzet.com/ ✍️ Fantasy Life Newsletter ➝ https://fantasylife.com/blogs/newsletter 💰 Follow my bets on Betsperts ➝ betsperts1.onelink.me/kpZN/Pete 🤑 Manzcoin NFTz ➝ https://opensea.io/collection/manzcoin-nftz #nfldfspicks #week6 #fantasyfootball #draftkings

Splash Play - Fantasy Football Podcast
TNF Bucs-Eagles, Low Probability Crystal Ball, Numbers Don't Lie (With Viewer Guest Frankie!)

Splash Play - Fantasy Football Podcast

Play Episode Listen Later Oct 14, 2021 59:26


Pete and Spags preview Thursday Night Football Bucs-Eagles, check in on the latest news and hit the Low Probability Crystal Ball, play a round of Numbers Don't Lie, and build some NFL DFS lineups for Draftkings with special viewer guest Frankie! Splash Play presented by Football Outsiders, subscribe to FO+ at http://footballoutsiders.com/subscribe, Go to http://edjsports.com to compare betting lines with the power of 100,000+ simulations. 🐦 Spags ➝ https://twitter.com/chrisspags 🏆 Week 6 Rake free $10, single entry GPP on Draftkings ➝ https://www.draftkings.com/draft/contest/115498130 🔴 Subscribe to Splash Play ➝ https://www.youtube.com/channel/UCtocTNLM4KH8UiEOHjOvt2Q?sub_confirmation=1 🔴 Get the audio version on iTunes ➝ https://podcasts.apple.com/us/podcast/splash-play-fantasy-football-podcast/id1531045853! ► Follow Splash Play! First 1,000 followers get followed back! http://twitter.com/splashplaypod http://instagram.com/splashplaypod 📈 Run The Sims ➝ https://www.runthesims.com/pete/ Get 10% off any package with promo code 'Pete'. All Run The Sims subs who use promo code Pete get access to a private DFS channel within the Deposit Kingdom discord: https://discord.gg/XD27Cw9J5A 👑 Want a free $10 on Underdog? Use promo code 'Pete' when you deposit for a $10 bonus ➝ https://play.underdogfantasy.com/p-pete-overzet 🎁 Randomizer Merch Boxes ➝ https://overzet.myshopify.com/ Randomizer Merch boxes are available now. It's the ultimate merch box for drinkers and drafters this summer. Box includes a $25 on Underdog Fantasy, a shot glass, koozie, coaster, raffle tix & much more. Use Promo Code Pete for FREE shipping. Want access to a best ball discord channel, private drafts, and custom badges and emotes on Youtube? 🔴 Step 1: Join the Deposit Kingdom discord ➝ https://discord.gg/tbAxDQ4 🎡 Step 2: Become Randomizer Royalty ➝ https://www.youtube.com/channel/UCDsGKh5UT53E1wfmzDTIl1w/join 🐦 Twitter ➝ https://twitter.com/peteroverzet 🎧 In A Vacuum (A Pete Overzet podcast) ➝ https://anchor.fm/peter-overzet 🔴 Subscribe to Youtube channel ➝ https://www.youtube.com/c/peteroverzet?sub_confirmation=1 👕 Merch ➝ https://overzet.myshopify.com/ 💻 Website ➝ http://peteroverzet.com/ ✍️ Fantasy Life Newsletter ➝ https://fantasylife.com/blogs/newsletter 💰 Follow my bets on Betsperts ➝ betsperts1.onelink.me/kpZN/Pete 🤑 Manzcoin NFTz ➝ https://opensea.io/collection/manzcoin-nftz #bucseaglesshowdown #nfldfs #week6 #fantasyfootball #draftkings

Moonman In The Morning Catch Up - 104.9 Triple M Sydney - Lawrence Mooney, Gus Worland, Jess Eva & Chris Page

The Drink Driving Range could actually be happening & we hear the absolute best sleepover story ever! Want more Moonman? Download the LiSTNR App for exclusive content and more.  #Comedy #Moonman See omnystudio.com/listener for privacy information.

The Sportive
#321: Go Rake Your Bullpens

The Sportive

Play Episode Listen Later Oct 12, 2021 67:45


Chicken Fingers back? Chicken Fingers back. Topics: (2:00) Vikes game recap plus a detailed Zimmer-Cousins “celebration” analysis, (31:00) an epic disaster by the Loons, and (44:00) Wolves bros and turds. Chicken picked actual rostered players this year, shocking us all. See acast.com/privacy for privacy and opt-out information.

Splash Play - Fantasy Football Podcast
Week 5's Biggest Takeaways, MNF Colts-Ravens, And A Special One For Fans Of The Crystal Ball Bit

Splash Play - Fantasy Football Podcast

Play Episode Listen Later Oct 11, 2021 62:14


Peter Overzet (http://twitter.com/peteroverzet) and EdjSports' Chris Spags (http://twitter.com/chrisspags) break down their five biggest snap takes from Week 5, introduce a new segment inspired by the Sopranos' renaissance, draft their top Week 6 Waiver Wire plays, and preview MNF Colts-Ravens plus give their picks while building a lineup for the Million Dollar DraftKings NFL DFS Showdown tonight! Splash Play presented by Football Outsiders, subscribe to FO+ at http://footballoutsiders.com/subscribe, Go to http://edjsports.com to compare betting lines with the power of 100,000+ simulations. 🐦 Spags ➝ https://twitter.com/chrisspags 🏆 Rake free $10, single entry GPP on Draftkings ➝ https://www.draftkings.com/draft/contest/115063565 🔴 Subscribe to Splash Play ➝ https://www.youtube.com/channel/UCtocTNLM4KH8UiEOHjOvt2Q?sub_confirmation=1 🔴 Get the audio version on iTunes ➝ https://podcasts.apple.com/us/podcast/splash-play-fantasy-football-podcast/id1531045853! ► Follow Splash Play! First 1,000 followers get followed back! http://twitter.com/splashplaypod http://instagram.com/splashplaypod 📈 Run The Sims ➝ https://www.runthesims.com/pete/ Get 10% off any package with promo code 'Pete'. All Run The Sims subs who use promo code Pete get access to a private DFS channel within the Deposit Kingdom discord: https://discord.gg/XD27Cw9J5A 👑 Want a free $10 on Underdog? Use promo code 'Pete' when you deposit for a $10 bonus ➝ https://play.underdogfantasy.com/p-pete-overzet 🎁 Randomizer Merch Boxes ➝ https://overzet.myshopify.com/ Randomizer Merch boxes are available now. It's the ultimate merch box for drinkers and drafters this summer. Box includes a $25 on Underdog Fantasy, a shot glass, koozie, coaster, raffle tix & much more. Use Promo Code Pete for FREE shipping. Want access to a best ball discord channel, private drafts, and custom badges and emotes on Youtube? 🔴 Step 1: Join the Deposit Kingdom discord ➝ https://discord.gg/tbAxDQ4 🎡 Step 2: Become Randomizer Royalty ➝ https://www.youtube.com/channel/UCDsGKh5UT53E1wfmzDTIl1w/join 🐦 Twitter ➝ https://twitter.com/peteroverzet 🎧 In A Vacuum (A Pete Overzet podcast) ➝ https://anchor.fm/peter-overzet 🔴 Subscribe to Youtube channel ➝ https://www.youtube.com/c/peteroverzet?sub_confirmation=1 👕 Merch ➝ https://overzet.myshopify.com/ 💻 Website ➝ http://peteroverzet.com/ ✍️ Fantasy Life Newsletter ➝ https://fantasylife.com/blogs/newsletter 💰 Follow my bets on Betsperts ➝ betsperts1.onelink.me/kpZN/Pete 🤑 Manzcoin NFTz ➝ https://opensea.io/collection/manzcoin-nftz #coltsravensshowdown #week6waiverwire #nfldfspicks #fantasyfootball #draftkings

Splash Play - Fantasy Football Podcast
Southern Expression Fantasy Awards, NBC's John Daigle Joins The Show, Week 5 Ride Or Die Picks

Splash Play - Fantasy Football Podcast

Play Episode Listen Later Oct 8, 2021 76:27


John Daigle from NBC Sports Edge joins Pete & Spags to discuss the latest injury news, bold predictions for every week 5 game, and the troll play of the week. 🐦 Daigle ➝ https://twitter.com/notJDaigle Splash Play presented by Football Outsiders, subscribe to FO+ at http://footballoutsiders.com/subscribe, Go to http://edjsports.com to compare betting lines with the power of 100,000+ simulations. 🐦 Spags ➝ https://twitter.com/chrisspags 🏆 Rake free $10, single entry GPP on Draftkings ➝ https://www.draftkings.com/draft/contest/115063565 🔴 Subscribe to Splash Play ➝ https://www.youtube.com/channel/UCtocTNLM4KH8UiEOHjOvt2Q?sub_confirmation=1 🔴 Get the audio version on iTunes ➝ https://podcasts.apple.com/us/podcast/splash-play-fantasy-football-podcast/id1531045853! ► Follow Splash Play! First 1,000 followers get followed back! http://twitter.com/splashplaypod http://instagram.com/splashplaypod 📈 Run The Sims ➝ https://www.runthesims.com/pete/ Get 10% off any package with promo code 'Pete'. All Run The Sims subs who use promo code Pete get access to a private DFS channel within the Deposit Kingdom discord: https://discord.gg/XD27Cw9J5A 👑 Want a free $10 on Underdog? Use promo code 'Pete' when you deposit for a $10 bonus ➝ https://play.underdogfantasy.com/p-pete-overzet 🎁 Randomizer Merch Boxes ➝ https://overzet.myshopify.com/ Randomizer Merch boxes are available now. It's the ultimate merch box for drinkers and drafters this summer. Box includes a $25 on Underdog Fantasy, a shot glass, koozie, coaster, raffle tix & much more. Use Promo Code Pete for FREE shipping. Want access to a best ball discord channel, private drafts, and custom badges and emotes on Youtube? 🔴 Step 1: Join the Deposit Kingdom discord ➝ https://discord.gg/tbAxDQ4 🎡 Step 2: Become Randomizer Royalty ➝ https://www.youtube.com/channel/UCDsGKh5UT53E1wfmzDTIl1w/join 🐦 Twitter ➝ https://twitter.com/peteroverzet 🎧 In A Vacuum (A Pete Overzet podcast) ➝ https://anchor.fm/peter-overzet 🔴 Subscribe to Youtube channel ➝ https://www.youtube.com/c/peteroverzet?sub_confirmation=1 👕 Merch ➝ https://overzet.myshopify.com/ 💻 Website ➝ http://peteroverzet.com/ ✍️ Fantasy Life Newsletter ➝ https://fantasylife.com/blogs/newsletter 💰 Follow my bets on Betsperts ➝ betsperts1.onelink.me/kpZN/Pete 🤑 Manzcoin NFTz ➝ https://opensea.io/collection/manzcoin-nftz #week5 #fantasyfootball #draftkings

The 13th Floor
Memesters

The 13th Floor

Play Episode Listen Later Oct 7, 2021 46:23


In case the portmanteau didn't click, this episode is dedicated to all those internet-originating creatures who keep us up at night! We're talking about Slender Man, Zalgo, and The Rake.

Wet Fly Swing Fly Fishing Podcast
WFS 254 - The Fly Fishing Life with David Coggins - Men's Fashion, Travel, Writing

Wet Fly Swing Fly Fishing Podcast

Play Episode Listen Later Oct 7, 2021 68:01


Show Notes: https://wetflyswing.com/254 Sponsor: https://wetflyswing.com/togens David Coggins is on the podcast to share his new book and perspective on a fly fishing life.   David has written some great books in men's fashion and now has produced a great book on the rituals of fly fishing. David and I dig into some deep thoughts on fly fishing and family and the impacts to parents getting older and influencing your life.  We get a little deep in this one so stick around for some Coggins insight. Show Notes with David Coggins - David Coggins was on the Art of Manliness Podcast. - Tom Rosenbauer was on the podcast in episode 63 here.  And Ed Jaworowski here in episode 233 to cover fly casting. - Javier talked about Arapaima in Ecuador on the podcast here. - David Coggins was on the podcast here and talked about writing, etc. - John Gierach was on the podcast in episode 47 here.  John discussed his background in writing. - David wrote for Men's Vogue magazine early on. - Drakes designs outdoor clothing. - Kirks glasses and the story of putting together and ad - David was the editor of Conde Nast Traveler Magazine  - Jeff Courier was on the podcast here and talked about almost dying on a bus in Africa. - The Rake and William Brown are two great resources for men's style. You can find David at the thecontender.co Fly Fishing Life Conclusion with David Coggins David Coggins is on the podcast today to share why you should take time to do the things you love and in this case a fly fishing life.  We find out why he thinks we should all try out a bonefish trip even if you've never thought about it before. Show Notes: https://wetflyswing.com/254

The Daily Gardener
October 4, 2021 Improve Soil Rake Less, William Gilpin, Thoreau, Edward Stratemeyer, J.K. Rowling, Viburnums by Michael Dirr and Dorothy Frances Blomfield Gurney

The Daily Gardener

Play Episode Listen Later Oct 4, 2021 23:42


Today in botanical history, we celebrate an English artist and clergyman, an old diary entry from the great Henry David Thoreau, and we'll also learn about an American publishing tycoon and his family's retreat called Bird Haven Farm. We'll hear an excerpt on October from a Harry Potter book. We Grow That Garden Library™ with a book from one of the great plantsmen of our time and his excellent resource on Viburnums. And then we'll wrap things up with a charming garden verse. I bet you've heard it before - but you may not be familiar with the woman who wrote it.   Subscribe Apple | Google | Spotify | Stitcher | iHeart To listen to the show while you're at home, just ask Alexa or Google to “Play the latest episode of The Daily Gardener Podcast.” And she will. It's just that easy.   The Daily Gardener Friday Newsletter Sign up for the FREE Friday Newsletter featuring: A personal update from me Garden-related items for your calendar The Grow That Garden Library™ featured books for the week Gardener gift ideas Garden-inspired recipes Exclusive updates regarding the show Plus, each week, one lucky subscriber wins a book from the Grow That Garden Library™ bookshelf.   Gardener Greetings Send your garden pics, stories, birthday wishes, and so forth to Jennifer@theDailyGardener.org   Facebook Group If you'd like to check out my curated news articles and original blog posts for yourself, you're in luck. I share all of it with the Listener Community in the Free Facebook Group - The Daily Gardener Community. So, there's no need to take notes or search for links. The next time you're on Facebook, search for Daily Gardener Community, where you'd search for a friend... and request to join. I'd love to meet you in the group.   Curated News Improve Your Soil by Raking Less | Fine Gardening | Terry Ettinger   Important Events October 4, 1761/1762  Birth of William Gilpin, English artist, teacher, clergyman, and landscape designer. He coined the term picturesque. He had documented his visit to Ross-on-Wye, and the resulting book became England's first tourist guide. William inspired others to enjoy the sights of the town, including the picturesque Wye river, and visitors came to the area in droves. William spent a great deal of time outdoors painting landscapes. He observed, Every distant horizon promises something new, and with this pleasing expectation, we follow nature through all her walks. During his life, many looked to William as an arbiter of artistic taste. In addition to the picturesque landscape, he was especially fond of old ruins, mountains, and trees. William's paintings were created on-site out in nature, and he wasn't opposed to using a little artistic license to make the scene even more compelling - adding more trees, a little bridge, or enhancing an old ruin. In 1786, William wrote, A ruin is a sacred thing. Rooted for ages in the soil; assimilated to it; and become, as it were, a part of it ... William was the first president of the Royal Watercolor Society, and he also authored several books related to his work as an artist. One of his more popular books was called Forest Scenery, which featured forty-five watercolors of trees and shrubs along with descriptions. He also included his tips and tricks for capturing a picturesque effect on canvas through the clumping of trees. Tree painting was a William Gilpin specialty. He adored trees. He once wrote, It is no exaggerated praise to call a tree the grandest and most beautiful of all productions on earth!   October 4, 1853 On this day, Thoreau wrote in his journal: The maples are reddening, and birches yellowing. The mouse-ear in the shade in the middle of the day, so hoary, looks as if the frost still lay on it. Well it wears the frost. Bumblebees are on the Aster undulatus, and gnats are dancing in the air.   October 4, 1862 Birth of Edward Stratemeyer, American publisher, writer of children's fiction, and founder of the Stratemeyer Syndicate. He produced over 1,300 books and sold over 500 million copies. He's remembered for series like The Bobbsey Twins and The Hardy Boys. The very day his new series, Nancy Drew, was released, he died. Regarding his legacy, Fortune wrote: As oil had its Rockefeller, literature had its Stratemeyer. After Edward died, his widow, Magdalene Van Camp, bought a Bird Haven farm for a weekend retreat. It was a place she enjoyed living on weekends and holidays for more than forty years. During those four decades, she wrote over half of the Nancy Drew books and developed plots for many other series. Edward and Magdalene's daughter Harriet took over the family business and ran it for fifty years. She also spent the last half of her life at Bird Haven. In 1982, while watching The Wizard of Oz for the very first time, she had a heart attack and died. Today the twenty-five acres known as Bird Haven Farm in Tewksbury Township is part of the Garden Conservancy Open Day. The barns, outbuildings, and the original nineteenth-century stone house are joined by a contemporary home built in the 1990s. In 2002, the garden was redesigned under the vision of Fernando Caruncho as a medieval village. The property boasts mature trees, an apple orchard, fruit trees, a vegetable and herb garden, hay meadows, and a perennial border designed by Lisa Stamm. Design elements include a woodland walk, cascading ponds, a charming pond hut, a maze garden for grandchildren, and an elf's stump. But there's something else happening at Bird Haven Farm. The current owner, Janet Mavec, finds inspiration in flora and fauna on Bird Haven, and she created her own line of whimsical jewelry. One day, as she was working in the garden, she was thinking about jewelry and was suddenly struck with the idea of making jewelry inspired by her vegetables. In a video of Bird Haven Farm, Janet says, I only make things that I either grow here myself - or they swim, or they fly in.  Janet's jewelry is made with brass and then dipped in 18 karat gold, sterling silver, or gunmetal. Janet hopes her jewelry clients feel a closeness to nature with her unique jewelry designs.   Unearthed Words October arrived, spreading a damp chill over the grounds and into the castle. Madam Pomfrey, the nurse, was kept busy by a sudden spate of colds among the staff and students. Raindrops the size of bullets thundered on the castle windows for days on end; the lake rose, the flower beds turned into muddy streams, and Hagrid's pumpkins swelled to the size of garden sheds. ― J.K. Rowling, Harry Potter and The Chamber of Secrets   Grow That Garden Library Viburnums by Michael A. Dirr  This book came out in 2007, and the subtitle is Flowering Shrubs for Every Season. In this book, Michael takes us on an in-depth tour of Viburnums - one of the most versatile, most utilized, and beloved shrubs for our gardens. As a woody expert, Michael was the perfect person to write a comprehensive guide on viburnums. He reveals their robustness and beauty in addition to sharing detailed information about every possible type of viburnum a gardener could ever desire. His honest and balanced review of every plant will make it easier for you to pick the perfect viburnum for your garden. Viburnums can satisfy any Landscape need: some are four-season, some are a true wow in the garden, some are well-behaved workhorses, others play a supporting role in the garden design. Whether you want gorgeous fall color, stunning blossoms, fragrance, or fruit, there's a viburnum for every need. Michael likes to say that a garden without viburnums is like a life without the pleasures of music and art. This book is 264 pages of viburnums in all their glory - spotlighting the diversity in this incredibly functional and beautiful genus. You'll want to bring it along on your next trip to the garden center. You can get a copy of Viburnums by Michael A. Dirr and support the show using the Amazon Link in today's Show Notes for around $14.   Today's Botanic Spark Reviving the little botanic spark in your heart October 4, 1858  Birth of Dorothy Gurney, English hymn-writer and poet. She wrote the famous wedding hymn O Perfect Love for her sister's wedding. Her sister loved the tune of O Strength And Stay but wanted different words so she could use the song during the ceremony. In a flash of divine inspiration, Dorothy jotted down new lyrics in just fifteen minutes, and the result was O Perfect Love. But Dorothy also wrote one of the most charming garden verses ever created. The words she strung together still grace our gardens, sundials, memorials, and cemeteries. The four lines of simple verse are taken from her original poem God's Garden. The kiss of the sun for pardon,  The song of the birds for mirth,  One is nearer God's heart in a garden  Than anywhere else on earth.   Thanks for listening to The Daily Gardener. And remember: "For a happy, healthy life, garden every day."

All Ruby Podcasts by Devchat.tv
Docker and Ruby ft. Huzefa Biyawarwala - RUBY 516

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Sep 29, 2021 59:45


Huzefa Biyawarwala joins the Rogues to discuss developer tooling around Docker and how it's used with Ruby and Rails. The Rogues join in and discuss the ways they've used Docker in their own setups and how they deploy apps using Docker and how Docker is used on their own development environment. Panel Charles Max WoodJohn Epperson Luke StuttersValentino Stoll Guest Huzefa Biyawarwala Sponsors Dev Influencers AcceleratorLevel Up | Devchat.tvPodcastBootcamp.io Links Rails On Docker SimplifiedDokkuRuby - Docker HubCodacyhuzefabiyawar/rails-docker:rails-projectGitHub | huzefahuzu/rails-sidekiqLinkedIn: Huzefa BiyawarwalaTwitter: Huzefa Biyawar ( @huzub ) Picks Charles- PodcastBootcamp.ioCharles- The Sword of ShannaraCharles- Ready Player OneHuzefa- DokkuJohn- MinecraftLuke- ELF64 hello worldValentino- Move over Rake, Thor is the new kingValentino- GitHub | avmnu-sng/rspec-tracerValentino- Nushell Valentino- RubyKaigi Takeout 2021 Contact Charles: Devchat.tvDevChat.tv | FacebookTwitter: DevChat.tv ( @devchattv ) Contact John: Rock Agile ConsultingGitHub: John Epperson ( kirillian )LinkedIn: John Epperson Contact Luke: GitHub: Luke Stutters ( lukestuts ) Contact Valentino: Doximity Technology BlogWork @ DoximityGitHub: Valentino Stoll ( codenamev )Twitter: V ( @thecodenamev ) Special Guest: Huzefa Biyawarwala.

All Ruby Podcasts by Devchat.tv
Docker and Ruby ft. Huzefa Biyawarwala - RUBY 516

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Sep 29, 2021 59:45


Huzefa Biyawarwala joins the Rogues to discuss developer tooling around Docker and how it's used with Ruby and Rails. The Rogues join in and discuss the ways they've used Docker in their own setups and how they deploy apps using Docker and how Docker is used on their own development environment. Panel Charles Max Wood John Epperson  Luke Stutters Valentino Stoll Guest Huzefa Biyawarwala Sponsors Dev Influencers Accelerator Level Up | Devchat.tv PodcastBootcamp.io Links Rails On Docker Simplified Dokku Ruby - Docker Hub Codacy huzefabiyawar/rails-docker:rails-project GitHub | huzefahuzu/rails-sidekiq LinkedIn: Huzefa Biyawarwala Twitter: Huzefa Biyawar ( @huzub ) Picks Charles- PodcastBootcamp.io Charles- The Sword of Shannara Charles- Ready Player One Huzefa- Dokku John- Minecraft Luke- ELF64 hello world Valentino- Move over Rake, Thor is the new king Valentino- GitHub | avmnu-sng/rspec-tracer Valentino- Nushell  Valentino- RubyKaigi Takeout 2021 Contact Charles: Devchat.tv DevChat.tv | Facebook Twitter: DevChat.tv ( @devchattv ) Contact John: Rock Agile Consulting GitHub: John Epperson ( kirillian ) LinkedIn: John Epperson Contact Luke: GitHub: Luke Stutters ( lukestuts ) Contact Valentino: Doximity Technology Blog Work @ Doximity GitHub: Valentino Stoll ( codenamev ) Twitter: V ( @thecodenamev )

Cycle Systems Academy
The SwissSide Pressure Measurement Rake

Cycle Systems Academy

Play Episode Listen Later Sep 27, 2021 54:17


Track uploaded to Awesound.comClick to view: show page on Awesound

Soccer Saturday - INDY ELEVEN for 09/25/21

"Soccer Saturday" featuring Indy Eleven

Play Episode Listen Later Sep 25, 2021 59:57


(00:00-06:11) - Greg Rakestraw is back with another edition of Soccer Saturday today and opens up the show with Rake explaining where the Indy Eleven are at right now in the playoff picture, the additions the Indy Eleven made this week, and profiles each of those players that the team added. (09:13-20:25) - Interim Head Coach Max Rogers returns in his weekly slot in the show to discuss the frustrating loss to Memphis 901 on Wednesday, how much training the team is doing with the lack of player rotation during mid-week matches because of injuries, and Coach Rogers breaks down some of the recent players the team has added in the last handful of days. (23:26-36:33) - President Katherine Reed of the Brickyard Battalion joins Rake on Soccer Saturday to explain how the BYB is handling the up-and-down season the Indy Eleven is having, how it feels being back at Carrol Stadium this year, and how the Brickyard Battalion came up with the idea of making a tifo for Carl Ouimette in celebration for his 100th match with the Indy Eleven. (39:36-53:07) - Head Coach Justin Sullivan of the Marian Knights women's soccer team makes his first ever appearance on Soccer Saturday with Greg Rakestraw to explain how his team is playing their best soccer as they head into the post-season, how the transition from Gary Yohe to Sullivan was so smooth, and how bringing back so much talent from last year to this year has helped him out. (56:09-59:56) - With Greg up against it time wise, he quickly closes out the show by dropping some names that will be on next week's installment of the show.

What In The...? Podcast
S. 01, Ep. 65: Bishop Kristina Rake: Ghosts, Mediums, Demons and Religion

What In The...? Podcast

Play Episode Listen Later Sep 24, 2021 113:05


On tonight's episode we sit down with author and head of the American Apostolic Old Catholic Church Bishop Kristina Rake, who will tell us all about the paranormal and religion, and how the two are not necessarily exclusive. Welcome to Episode 65 of "What In The...? Podcast,! --- This episode is sponsored by · Anchor: The easiest way to make a podcast. https://anchor.fm/app --- Send in a voice message: https://anchor.fm/what-in-the-podcast/message Support this podcast: https://anchor.fm/what-in-the-podcast/support

Soccer Saturday - INDY ELEVEN for 09/18/21

"Soccer Saturday" featuring Indy Eleven

Play Episode Listen Later Sep 18, 2021 59:26


(00:00-02:17) - Greg Rakestraw is back with another edition of Soccer Saturday and spends the first couple minutes of today's show by updating you on the Indy Eleven standings in relation to their playoff aspirations and previews the rest of the show. (05:19-18:38) - Interim Head Coach Max Rogers returns in his weekly spot in the show to preview his team's important match tonight against rival Louisville City at 7pm, explain how much film study he has put in towards the match whether that is past matches against Lou City or their more recent matches, and then how important Gershon Koffie has been to the team this season. (21:39-37:56) - New member of the Indy Eleven in Liam Doyle on loan from San Antonio FC joins Rake for the first time on Soccer Saturday to explain his decision to come to the Indy Eleven, explains where the Isle of Man is because he is the first Indy Eleven player from the Isla of Man, and tells his story on how to ends up in Ohio for college soccer. (40:58-50:00) - Former member of the Indy Eleven and current member of Louisville City in Tyler Gibson makes another appearance on Soccer Saturday and shares some perspective from the opponents side going into tonight's match, what it feels like playing at Carrol Stadium, and whether or not he heard the can of beans story regarding Carl Ouimette. (53:02-56:26) - In the final segment of today's installment of Soccer Saturday, Greg Rakestraw closes out the show recapping some of the Premier League scores from this week that caught his attention.

Fescoe in the Morning
09/16 - 6 am - Continuing To Rake

Fescoe in the Morning

Play Episode Listen Later Sep 16, 2021 58:02


Salvador Perez continues to give us a reason to watch the Royals. Plus, we check in on Baltimore with Bobby Trosset of WBAL, maybe this is the best thing for EB, we Shout It Out, Kling calls BS on this high praise, better late than never, did this one get off the hook, and Orlando Brown keeps it real.  See omnystudio.com/listener for privacy information.

What's Yer Weird Story?
Ep 161- “Wooly Booger”

What's Yer Weird Story?

Play Episode Listen Later Sep 14, 2021 90:06


Ep 161- Joining us this week from our home state of Oklahoma is Bigfoot Researcher & Enthusiast Steve Sparks. Steve recounts a life changing tale from his youth as well as some of his experiences in the field. Sasquatch, Wooly Booger, Dog Men, a Rake and much more on this week's wild episode of the … Continue reading "Ep 161- “Wooly Booger”"

Dr. Jay de Soca Prince's De Prescription Podcast

SOCA THERAPY - SEPTEMBER 12, 2021: For all the Soca junkies out there, we have another edition of Soca Therapy and in addition to all the big chunes, we have Ovadose co-hosting the Top 8 Countdown and presenting the best Soca from the Bahamas. It was educational to learn more about Rake-n-Scrape music.Follow Dr. Jay @socaprince​, @socatherapy and @studywithjoanne“Like” Dr. Jay on http://facebook.com/DrJayOnline

The Bat Around
The Bat Around 9-11-21 - N. Ruiz, S. Charles

The Bat Around

Play Episode Listen Later Sep 11, 2021 157:51


This week on The Bat Around, Paul Valle returns as the guys debate whether they want this team to win, or to lose, because believe or not, there are opinions on both sides. At 10:20, Stan "The Fan" Charles joins the show to discuss the Orioles attendance woes and the teams better performance as of late. Then, Take to Rake and Orioles banter where the guys discuss the unsung heroes of the minor leagues this year. Then, at 11:40, Nathan Ruiz calls in to talk early news about the 2022 draft, and the crowded outfield situation the Orioles have. Then, they finish out the show with Take to Rake. That and more, on The Bat Around!

Bleav in Chicago Sports
S2 Ep 3 (56): Who Is Your 'Chicago' Bishop Sycamore Team? + Bears 53-Man Roster & Cubs' Old Rookies Rake

Bleav in Chicago Sports

Play Episode Listen Later Sep 4, 2021 42:07


Joey Gelman and Dan Collins break down the release of the Bears 53-man roster and debate the biggest question marks heading into the season. They then shift gears and talk about the offensive surge of the Cubs' 'old' rookies and if they have a place on this team moving forward. They close the show talking about the crazy Bishop Sycamore fiasco and if they created a Bishop Sycamore team for Chicago sports, which athletes would make the team?See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

The Bat Around
The Bat Around 9-4-21 - E. Garfield, S. Charles

The Bat Around

Play Episode Listen Later Sep 4, 2021 140:49


This week on The Bat Around, Paul Valle is enjoying the weekend after his wedding on Friday and Ryan Blake returns to co-host the show. The guys are joined by Stan "The Fan" Charles at 10:20 to discuss player stock going into September and who might come out on top in various divisions across baseball. Then, in Orioles banter, Zack and Ryan debate who could make a case for themselves for next years team this September. They'll also discuss who they feel deserve promotions and how soon each could happen. At 11:40, the guys are joined by Eric Garfield to talk about his experience watching the FCL and which Orioles are making a name for themselves in rookie ball. After that, they finish it out with Take to Rake. That and more, on The Bat Around!

Soccer Saturday - INDY ELEVEN for 09/04/21

"Soccer Saturday" featuring Indy Eleven

Play Episode Listen Later Sep 4, 2021 59:30


(00:00-02:45) - A very happy Greg Rakestraw is back with another edition of Soccer Saturday and opens the show by recapping everything that happened since last week's installment of the show. Rake also previews the conversations that he will be having with Max Rogers and Brian Dunseth later on in the show. (05:47-17:45) - Interim Head Coach Max Rogers of the Indy Eleven is back on the show following a 2-0 win against Real Monarchs last Saturday, explains the thought process behind the decision made by the club to release goalie Jordan Hamilton, and how the club is feeling about playing at home now that they have won two straight home matches. (20:46-25:40) - Defender AJ Cochran joined Greg Rakestraw and Brad Hauter following the victory last Saturday against Real Monarchs and Rake brings back that interview during this segment of today's show. Cochran discusses the environment of playing at Carroll Stadium this year and more. (28:42-45:05) - A frequent guest in Brian Dunseth from SiriuxXM joins Greg Rakestraw with World Cup qualifying underway for Team USA. Dunseth gives his opinion on the performance of the Men's National Team against El Salvador, how important the USMNT upcoming match against Canada is, and whether or not if there is a World Cup qualifying rivalry anywhere else in the world. (48:05-56:29) - In the final segment of today's installment of Soccer Saturday, Greg Rakestraw takes a look at the latest soccer standings in the EPL, examines some of the top matches throughout the course of next week, and shares his thoughts on the Champions League group stage matches.

Soccer Saturday - INDY ELEVEN for 08/28/21

"Soccer Saturday" featuring Indy Eleven

Play Episode Listen Later Aug 28, 2021 59:19


(00:00-03:30) - Greg Rakestraw is back with another installment of Soccer Saturday brought to you by the Indy Eleven and Rake opens up today's show in the first couple minutes by recapping the matches since last week's show, previews some of the conversations he will have throughout the show, and then the latest soccer news regarding the English Premier League. (06:32-17:19) - Interim Head Coach Max Rogers joins Rake in his usual timeslot in the show this week to access the performance of the boys in blue from last Sunday's performance in Kansas City against Sporting KC II, what the team really has to focus on in their match tonight against Real Monarchs, and how beneficial it is for the entire club knowing that they have four home matches within their next five. (20:20-31:42) - Midfielder Jeremiah Gutjahr makes his second appearance on Soccer Saturday with Greg Rakestraw to access the way his first year with the Indy Eleven has gone thus far, what it means to him to move up from someone who was seeing occasional minutes to being apart of the 18 players who are seeing regular minutes, and gives his take on why this season has been so hard for the team. (34:45-47:26) - Greg Rakestraw continues Soccer Saturday with Dr. Joseph LaPlaca of Ares Elite Sports Vision to explain how he started working with the Indy Eleven and details the type of work that he does with some of the position groups on the Indy Eleven. (50:28-56:26) - In the final segment of today's edition of Soccer Saturday, Greg Rakestraw wraps up the show with some news and notes regarding Cristano Renaldo going back home to Manchester United and the United States Men's National Team.

MiedoScopeMx
Historias de Miedo Agosto 27 2021 5K EN YOUTUBE Y THE RAKE

MiedoScopeMx

Play Episode Listen Later Aug 28, 2021 69:11


No te pierdas los directos de Lunes a Viernes 11 pm En el programa de hoy festejamos por los 5K de subs en Youtube y Chavito nos conto una historia de The Rake. Apoya con PayPal: julio_azuara@hotmail.com Mi código de TIK TOK para que ganes una lana: 9377518101 Mi código de KWAI para que ganes una lana:137884077 Únete a nuestras redes sociales. https://instagram.com/miedoscope https://twitter.com/MiedoScopeMx https://www.facebook.com/miedoscopemx/ https://www.twitch.tv/miedoscope https://www.youtube.com/miedoscopemx

First Draft with Sarah Enni
Destined For Genre With Sarah MacLean

First Draft with Sarah Enni

Play Episode Listen Later Aug 26, 2021 74:29


First Draft Episode #320: Sarah MacLean Sarah MacLean, New York Times bestselling author of romance novels, including Nine Rules to Break When Romancing a Rake, A Rogue By Any Other Name, and many more, talks about Bombshell, the first book in her new Hell's Bells series. Sarah also co-hosts the Fated Mates romance podcast. Links to Topics Mentioned In This Episode: The Scarlet Letter by Nathaniel Hawthorne Anne Rice, author of Interview With the Vampire and The Vampire Lestat Sarah Rees Brennan, author of Unspoken, The Demon's Lexicon, and In Other Lands and more Carrie Ryan, author of The Forest of Hands and Teeth, Daughters of Deep Silence, and more Aprilynne Pike, author of Wings, Glitter, and more Kami Garcia and Margaret Stohl, co-authors of Beautiful Creatures Dr. Jennifer Lynn Barnes, professor studying fiction and the brain, and also author of The Inheritance Games, The Naturals, Little White Lies and more Nora Roberts, author of Visions in White, The Next Always, and Year One also publishes as J.D. Robb, author of the In Death series Bella Andre, author of The Look of Love, Game For Seduction, and more Good and Mad: The Revolutionary Power of Women's Anger by Rebecca Traister Sadie Doyle, author of Trainwreck: The Women We Love to Hate, Mock, and Fear . . . and Why Mona Altahawy, author of Seven Necessary Sins of Women and Girls Gangs of London by Ryan McDonald Alice Diamond and the Forty Elephants by Brian McDonald Peaky Blinders (TV show) Sophie Jordan, author of Firelight, Foreplay, and more Tessa Dare, author of The Duchess Deal, Romancing the Duke, and more Desmond Morris, author of The Naked Ape A Hunger Like No Other, first in the Immortals After Dark series by Kresley Cole Christina Lauren, author of The Unhoneymooners, The Soulmate Equation, and Beautiful Bastards

Straight 2 L, The L Word Podcast
GenQ 203: Luck Be A Lady

Straight 2 L, The L Word Podcast

Play Episode Listen Later Aug 26, 2021 133:54


The only question we have for this episode is: How. Did. Shayne. Plan. To. Make. Money. At. Poker. Night. Without. The. Rake.   That's it. That's the list.

Soccer Saturday - INDY ELEVEN for 08/21/21

"Soccer Saturday" featuring Indy Eleven

Play Episode Listen Later Aug 21, 2021 60:35


(00:00-02:55) - Greg Rakestraw is back with another edition of Soccer Saturday on The Fan by opening the show with the recent performances by the Indy Eleven, previews the guests that will be on today's program, and teases some upcoming topics that he cover later in the show. (05:58-16:00) - Interim Head Coach Max Rogers makes his weekly stop on Soccer Saturday with Greg Rakestraw following a frustrating performance by his squad earlier in the week, how you work on things without having much time to train on the pitch, and shares the keys to victory for tomorrow's match against Sporting KC II. (19:01-29:54) - During the third segment of today's installment of Soccer Saturday with Greg Rakestraw, he brings back an interview he did following the Indy Eleven's with last Saturday against the OKC Energy with Nicky Law and plays a portion of a different postgame interview with Jordan Farr too. (32:56-45:05) - Center-back for Toronto FC in Eriq Zavaleta joins Rake on Soccer Saturday to explain how he made the jump from Westfield, Indiana to playing for the El Salvador national team, describes how he is feeling about his season overall right now, and how awesome it is to see all the activity at Grand Park with soccer, football, and many other sports. (48:05-57:35) - In the final segment of today's edition of Soccer Saturday, Greg discusses the news regarding Carli Lloyd announcing her retirement and recaps some of the matches from the opening week in Premier League.

Expanded Perspectives
The Circle In The Woods

Expanded Perspectives

Play Episode Listen Later Aug 20, 2021 57:42


On this episode of Expanded Perspectives, the guys start the show off talking about Cam's new painting hobby and then they get into some strange stories sent to them by the listeners. They discuss a person going for a midnight walk has an encounter with a Pale Crawler, a possible Time Slip, Demon or Fey trickster in a Polish forest in1945, a couple who were driving some back roads one evening has an encounter with a possible Rake and 2 Glimmerman sightings. All of this and more on this installment of Expanded Perspectives! Want to share your story? Email: expandedperspectives@yahoo.com Hotline: 888-393-2783 Music: All music for Expanded Perspectives is provided by Epidemic Sound!

The Bat Around
The Bat Around 8-14-21-A. Daschbach, R. Dubroff, S. Charles

The Bat Around

Play Episode Listen Later Aug 14, 2021 154:24


This week on The Bat Around, the guys discuss Chris Davis' complicated legacy, and the Orioles sorry 9 game losing streak. At 10:20, Stan "The Fan" Charles is on for his weekly segment where he discusses Chris Davis, and how the Orioles could add to the rotation at the end of the year. At 10:50, Orioles prospects Andrew Daschbach joins to discuss his year so far with the Aberdeen Ironbirds. Then, the guys discuss everything Orioles in Orioles banter. At 11:40, Rich Dubroff from Baltimorebaseball.com calls in to discuss the Chris Davis situation and how it may affect the off-season. Then, Take to Rake and Ravens talk to finish out the show!

Front Row
Celebrating Stravinsky

Front Row

Play Episode Listen Later Aug 11, 2021 28:08


Russian composer Igor Stravinsky died 50 years ago this year. Yet his influence is still felt today, whether it's the pounding rhythms of The Rite of Spring or the musical borrowings of The Rake's Progress. Radio 3's Kate Molleson explains how Stravinsky changed the musical landscape, and just why we should be celebrating a composer born nearly 140 years ago. Aurora Orchestra are preparing for their appearance at this year's BBC Proms. And the preparations involve memorising The Firebird, to play on stage without sheet music. Conductor Nicholas Collon and bassoonist Amy Harman discuss what memorising adds to the performance, and whether learning Stravinsky has any extra challenges. Dancer Francesca Velicu earned an Olivier Award for dancing the role of the Chosen One in Pina Bausch's version of The Rite of Spring at English National Ballet. How does it feel to dance to the death? Conductor Sir Simon Rattle has had a lifelong love affair with Igor Stravinsky. He tells John Wilson how he got hooked at an early age, and recommends a playlist for Stravinsky beginners. Presenter: John Wilson Producer: Sofie Vilcins Main image: Igor Stravinsky at the BBC in 1965.

Ojai: Talk of the Town
Rhiannon Giddens & The Ojai Music Festival

Ojai: Talk of the Town

Play Episode Listen Later Aug 11, 2021 43:16


Rhiannon Giddens, virtuoso banjo player, singer-songwriter, Grammy winner, MacArthur "Genius" Grant recipient and keeper of the flame of African-American roots music, will be among the featured performers at this year's Ojai Music Festival, coming Sept. 16-19, under the musical direction of John Adams. We talked with Giddens from her home in Dublin, where she and her partner, Francesco Turrissi, now live. It will be her first trip to Ojai, though she's inadvertently hit on an Ojai theme with her popular "Aria Code" podcast, in which she contrasts an aria from Stravinsky's "Rake's Progress" with Vivian Liberto Cash's imagined lament at the absence of her husband, Johnny Cash, while she holds down the fort in Casitas Springs. Giddens will perform a mix of her own music, as well as modernist masterpieces by Adams and Mozart. Giddens, who will be featured on the cover of the Fall 2021 issue of Ojai Quarterly, first came to prominence with the Carolina Chocolate Drops, reviving the once-ubiquitous and now nearly forgotten Black string band, as well as for her acting chops on "Nashville." She holds an important place in the folk music scene as a chronicler and interpreter of the vital tradition of roots music. For more information, check out the 2021 Ojai Music Festival program or read the fascinating article by John Jeremiah Sullivan in the May 13, 2019 issue of the New Yorker. https://www.newyorker.com/magazine/2019/05/20/rhiannon-giddens-and-what-folk-music-means https://www.ojaifestival.org/2021-festival-schedule/

Ghost Aliens & Beyond
Top 10 Ghost Pubs UK and Rake Murder Village

Ghost Aliens & Beyond

Play Episode Listen Later Aug 9, 2021 19:24


Hi all welcome to a new episode of GAAB, sorry we little late but life as we knew it is nearly back. ON THIS EPISODE. Ten most haunted pubs in the UK https://www.starpubs.co.uk/most-haunted-pubs Rake the murder Village in Sussex https://www.sussexlive.co.uk/news/sussex-news/rake-quaint-south-downs-village-5748008 If you would like to be a guest on the show please contact me on. Twitter : @gaabpodcast Email : ghostaliensandbeyond@gmail.com Check out mine and Simon other YouTube show and podcast. The Epic Florida Project YouTube Epic Shows ( tefpod ): https://www.youtube.com/watch?v=dLOywW5bRJY&list=PLGJQT-pmsflTUQr7EkBGmkgm-sBiE_f_g Podcast : https://anchor.fm/the-epic-florida-project Suscribe to Epic Shows on YouTube : https://www.youtube.com/channel/UCtZ7j6MZ41mA12txX-qdLOg/featured Thank you for listening please give us a good review on the podcast app of your choice. STAY SPOOKY. --- Send in a voice message: https://anchor.fm/ghost-aliens--beyond/message

The Bat Around
The Bat Around 8-7-21 T. Karpovich, S. Charles

The Bat Around

Play Episode Listen Later Aug 7, 2021 159:15


This week on The Bat Around, Paul Valle returns as the guys recap a decent week for the Orioles and profile the exciting new addition of Jorge Mateo. They are joined by Stan "The Fan" Charles at 10:20, who will talk to them about how the 2021 playoffs might round out, and how the Orioles might follow up their quiet trade deadline in the offseason. Then, the guys discuss Mike Elias' comments about the Orioles closing the gap in the AL East, and getting closer to entering their competitive window. At 11:45, Todd Karpovich joins the show to discuss the sudden improvement the Orioles made after the All-Star break, and the potential impact of various minor leaguers in the future. Then, the winner of Take to Rake is announced, and the guys close out the show. That and more on The Bat Around!

Soccer Saturday - INDY ELEVEN for 08/07.21

"Soccer Saturday" featuring Indy Eleven

Play Episode Listen Later Aug 7, 2021 60:09


(00:00-06:12) - Greg Rakestraw is back with another edition of Soccer Saturday following a win on Wednesday against FC Tulsa for the boys in blue, and Rake opens up today's show by previewing the conversations you will hear the next hour, touches on the USMNT and MSWNT, and updates you on the news surrounding Lionel Messi. (09:14-23:34) - Interim head coach of the Indy Eleven in Max Rogers joins Greg Rakestraw once again on Soccer Saturday to breakdown the victory over FC Tulsa from Wednesday, how important it was for Gordon Wild to pick up his second goal on the season for himself and the team, and previews his team's next opponent in Atlanta United 2. (26:35-39:29) - Greg Rakestraw is joined by Indy Eleven midfielder Carl Haworth to explain how these last couple months have been for him while he is recovering from injuries, how much longer he anticipates on being out before being able to return to the pitch, and gives his perspective on the mid-season coaching change from Martin Rennie to Max Rogers. (42:31-51:53) - Greg deems this segment the Men's and Women's National Team update segment and spends the first couple of minutes discussing the USMNT performance in the Gold Cup, how he feels really good about the USMNT going into the CONCACAF Gold Cup, and how the USWNT performance in Tokyo in connected to the 2019 concerns people had about the team. (54:54-57:08) - In the final minutes of today's show, Greg Rakestraw received a text from Max Rogers on something that he forgot to say during their conversation and teases a guest for next week's show!

True Crime Psychology and Personality: Narcissism, Psychopathy, and the Minds of Dangerous Criminals
CASE: Todd Mullis "Corn Rake Killer" | Nature of Repeated Infidelity

True Crime Psychology and Personality: Narcissism, Psychopathy, and the Minds of Dangerous Criminals

Play Episode Listen Later Aug 6, 2021 16:38


True Crime Personality and Psychology True Crime Psychology and Personality with Dr. Todd Grande is a podcast that profiles criminal personalities, discusses personality disorders and examines real life events from a scientifically informed perspective   Links for Dr. Grande YouTube channel Dr. Grande's Patreon   Want more mental health content? You might also be interested in these other Ars Longa podcasts: Mental Health // Demystified with Dr. Tracey Marks  Healthy // Toxic   Ars Longa Media To learn more about us and this podcast, visit arslonga.media.  Produced by: Christopher Breitigan. Executive Producer: Patrick C. Beeman, MD The information presented in this podcast is intended for educational purposes only and should not be construed as mental health advice. Learn more about your ad choices. Visit megaphone.fm/adchoices

The Drill Down with Peter Schweizer
Lobbyists Rake In Millions With Their Connections

The Drill Down with Peter Schweizer

Play Episode Listen Later Aug 5, 2021 34:56


Peter Schweizer and Eric Eggers expose lobbyists who rake in millions with their connections.

The Bike Shed
303: Dear Mr. Grumpy Goose

The Bike Shed

Play Episode Listen Later Aug 3, 2021 45:45


Chris gives a DB sessions update and talks bifunctors & command objects. Steph shares the coolness of a gem she's been using called after_party, and excitedly gushes about her new laptop. (Chris is hoping to hold off on replacing his until the end of the year and then they can compare!) The two then answer a listener question on retrospectives and how they've seen productive ones run, while giving some of their own helpful opinions on dos and don'ts. They're talking to you, Grumpy Goose! dry-monads gem (https://github.com/dry-rb/dry-monads) attr_extras gem (https://github.com/barsoom/attr_extras) after_party gem (https://github.com/theSteveMitchell/after_party) What Went Well? - Bike Shed 123 (https://www.bikeshed.fm/132) What I Believe About Software - Bike Shed 172 (https://www.bikeshed.fm/172) Is Agile Over? - Bike Shed 299 (https://www.bikeshed.fm/299) Running a Retrospective - Upcase (https://thoughtbot.com/upcase/videos/running-a-retrospective) Transcript: STEPH: Cool. [laughter] CHRIS: Good. No, I like what you did there. STEPH: Yeah, I feel like we can get rambling on that one. CHRIS: It's been great. This is what the Bike Shed is at its best. It's the two of us just rambling and being like, well, what about this? And if it's this, then that, then these, and it depends. And it's complicated and it's nuanced. And what about the humans? That's the story of The Bike Shed right there. [laughs] STEPH: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Steph Viccari. CHRIS: And I'm CHRIS Toomey. STEPH: And together, we're here to share a bit of what we've learned along the way. Hey, Chris, how's your week? CHRIS: My week has been good. I have some updates actually on some topics from previous episodes. One of the things that I can update on is the discussion around the cookie versus the database store. So I had posed this as a thing that I was going to be doing in the app for a handful of reasons. Most notably, I wanted the ability to invalidate sessions from the server-side, wanted to have a little more control over that. And so that's a dream that the database-backed session store can do. Eventually, I have to make that actually work in the way that I want. But I was asking the question in that episode, which we can include a link to the specific episode, but I was asking the question of why don't we just do this all the time? The database-backed sessions seem better in all these ways. It's a lower overhead per request because you're just sending the session ID and the cookie instead of the whole payload of the session. You actually can have more data stored in it, a bunch of things that seemed really great. And then right after I introduced it, I figured out the thing. I figured out the secret. It's not a big issue, and we're going to stick with database session stores. But we have to be purposeful because it turns out they are essentially plain text in the database. And so if there's anything that you are putting into the session like say a social security number or an authentication token or other things which naturally I might have done if it was in a cookie that lives on the user's browser and never actually lives on the server, persists on the server, that seems fine to me. But now these things are getting stored in the database and that really changes the calculus, especially because if I'm not purposeful, they'll just stick around for forever. So social security is probably the most pointed example of this. If you happen to have a form in the app that accepts a social security number and you want that to persist through some number of other steps, not actually going to store the social security number in the database because that's a thing that I have actively chosen not to do. I need to send it off to some other system, but I do need to hold onto it for a few minutes. The session is a perfect place to put that unless the session gets stored in my database. STEPH: That's such a great point. I'm so glad you discovered that. And in our recent conversation, we were trying to think of the reasons why this isn't the default case. You may be headed in this direction, but this may also be timely, the fact that you're discovering this issue but also the fact that Rail 6.0 now has encrypted columns. Is that where you're headed with the fact that you can still keep session data in a database? CHRIS: That is a great question, and it is an intriguing option. But it's not the one that I'm going with here. I think broadly, my hope is to completely avoid ever persisting this data in the database, this truly sensitive user-specific PII or PCI or social security numbers or any of these other fancy acronyms that get collected together under the umbrella of I probably don't want that on my server. For those, I'm just opting to push them back into a cookie. So I'm using particularly a...In rails, it's fun because they have a fluent interface where you can just chain together things, so it's cookies.signed.encrypted.whatever, and then you go from there. But I'm using signed, encrypted cookie, which is essentially what the session store views; the cookie session store uses itself. So I'm basically reverting to the old session store behavior for specific values. So anything that is truly sensitive like that, I'm just saying, cool, that's actually just going to live in a cookie, and that will be it, but not leaning on the ability to encrypt the database sessions. There's just enough subtlety around that. There's so much volume of data if I do allow that sensitive data into the system that any failure, any exploit that happens, would be somewhat catastrophic. So, in my mind, this lowers the surface area and says, yeah, this data really never lives on the server. It comes with a request, and then it's gone after the fact. And that's the world I want to live in. STEPH: Yeah, that's super interesting. You're also raising questions for me that I hadn't considered when we originally had this conversation where there's necessity or that you're looking to store form data or sensitive data in that session as well. So that makes a lot of sense to me that for that type of behavior, we're going to separate that from the idea of authentication and the user session and still use encrypted cookies for those details. So it only stays with the user's browser, but then the actual authentication of a user that part could still live in the database. CHRIS: It is ending up being a weird Venn diagram of; this is data that I want to stick around but only sometimes and particular to the machine that the user is interacting with because the session is still associated with a cookie at the end of the day. So a user may have multiple sessions in the database-backed session version. It is somewhat interesting, and I'm going to see how it develops over time. But yeah, at a minimum, I have now found this edge case of like, ooh, okay, sensitive data, that's a thing, which is one of the reasons that I would reach for the session inherently. So it turns out, as always, it depends. Things are complicated. STEPH: It's a nice update. I like when we have closure to a question like that, especially so quickly. CHRIS: Love to provide that continuity. It's what I'm all about. But yeah, what's up in your world? STEPH: What's up in my world? I am excited that I have a new laptop. So I have been using a MacBook Pro for about the last...it's lasted me for a while. I think I've had it for a good four, four, and a half years, but that's on the fritz. The keyboard, in particular, the keys are popping off, and that's something that I could go get fixed. But I'm at the point that I need a new laptop. So I have a brand new shiny laptop. And I had the option to either go with a 16-inch MacBook Pro or to go with one of the new, fancy laptops that has the M1 chip. And I was torn for a little while because having the M1 chip sounds really cool and novel, and there's a lot of speed improvements that come with that. But I ended up going with just the 16-inch MacBook Pro; specifically, one, it's still very fast. It's very reliable. I can use this as my work machine and just know everything's going to work. That part feels really important to me. And then also the screen size is important. So any Mac laptop that is using the new M1 chip, I think they only go up to a 13-inch, right now, screen size. And I really want the 16-inch in case I am traveling, so I have that larger desktop. But I did do some research into the M1 just because I know about it. I know it's out there. I know it's hot. People are interested in it, but I didn't know a whole lot about it. So for anyone else that's like me and is curious about what the heck this M1 chip is, it's essentially Apple's foray into making their own processors. So traditionally, their machines have used Intel CPUs and third-party graphic processors, and other parts. And this introduction of the M1 chip really represents Apple's switch to having their own internal architecture rather than relying on those third-party parts. And it also means that all those features that were sourced from other parties like the CPU and its security are now being combined into a single chip, which has also led to some performance improvements. And while I was reading about the M1, there's a lot to go through, but the thing that stood out to me was this idea of Apple's Neural Engine. And I thought, well, that sounds super fancy. What is that? Are you familiar with Apple's Neural Engine? Have you read about that? CHRIS: I don't think I am. What all is that? STEPH: Yeah, good question. That was a question I was asking myself just recently. So essentially, their neural engine it's a microprocessor that specializes in the acceleration of machine learning algorithms. So it's really similar to how a GPU will focus on accelerating graphics rendering. And their neural engine or neural engines in general then focus on accelerating neural network operations. And the inclusion of a neural engine isn't something that's new because Apple introduced this into iPhones and iPads back in 2017 to support their features like Face ID and emoji, searching for photos with dog pictures. Siri speech recognition is also one that's using this engine and other machine learning tasks. But the sparkly stat that Apple is sharing with this new design is it's a 16-core design that can perform 11 trillion operations per second, which sounds very fancy, very fast. But it really got me thinking about how companies are working to improve, not just laptops but also our mobile devices to run machine learning software more efficiently, and then how that's just going to evolve and change all the different features that we use, and then how developers can integrate with this engine. I think currently, Apple hasn't shared much information about how this engine works, but I think they've exposed a few developer tools so people can still build features that will then use the power of this faster, improved neural engine. CHRIS: Oh, that's super interesting. I have still not really delved into machine learning or artificial intelligence, or any of that stuff in any real way. But it's one of those things like the number of mentions is ticking up. And at some point, I'm like; I probably have to pay attention to this, don't I? I'm still in the not paying attention to it camp. So if I'm understanding, though, you just described this wonderful feature, but you opted for the machine that does not have all the fancy stuff. You did not... STEPH: Exactly. [laughs] CHRIS: Okay, yeah. STEPH: Yes, it would have been nice. That would have been neat, but yeah, I needed a machine with a larger screen, all those good things. And that's still really fast, for the record. CHRIS: Oh yeah. I'm desperately hoping to make it to the end of this year. This is going to be a bit of a rumor mill here, but my understanding is the expectation is that Apple is going to release a 14-inch MacBook Pro with the M1 and the return of MagSafe, and the removal of the touch bar. And that sounds like my dream machine right there. I want that piece of hardware. I also seem to care a little bit less about the size of the laptop screen. I'm so often working at my desk with a large-format monitor that I'm connected to. And so, when I'm on the road, I want to optimize for portability when I'm traveling because I do it so rarely, and then I'm hopefully focusing on travel at that point. But we'll see if that remains true as the shape of my work changes and I start to not only work from home. And maybe I'll actually change my tune on that. But for now, that's my hope is to make it to that machine and then get one, and that it exists because right now, those are all rumors. STEPH: Well, I totally support this goal of yours. So that way, you can have that new-new, and then you can report back on what it's like, and then we can compare. Because I'll have the other version, the Intel CPU, and then you'll have the M1 chip, and we can see how our lives are different. CHRIS: You'll have the new, and I'll have the new-new, and that's how we'll categorize them. STEPH: [laughs] But yeah, I'm very much looking forward. Having a new laptop is always just such a fun feeling. It's just a clean space that I get to rebuild. It's like going through and prioritizing; what are the things that still spark joy? And then I get to only port over the stuff that I still really use all the time and want to keep. So I'm looking forward to getting it set up. CHRIS: I need to do that sometime soon. I'm like five years deep, at least on this machine. So I've been dragging along. Also, the hard drive is just completely full, and I regularly have to go through and delete things before we start recording because it turns out these audio recordings start as very large files. [chuckle] So it's almost a weekly thing where I'm just like, got to throw something out today. I don't know what. It's fine. I'm going to be fine. [laughter] I'm going to make it to the end of the year, and it's going to be great. STEPH: What else is going on in your world? CHRIS: Well, I wrote some fancy code, and I use fancy not necessarily as a good word. [chuckle] So I'm intrigued that the code could be described perhaps as clever or other words like that, which I think are very complicated words in the coding space. I tend to try and avoid this type of coding where I'm trying to introduce abstractions and clean things up, and remove duplication because I've been burned by that so many times in the past. But this time, I think maybe this time it'll work. So, in particular, there are two different areas of the application. There were two sets of refactorings, but they really went together. One is we have the idea of command objects within the application that we're working on. So there are a lot of cases where we need to save something to the database and then communicate something to an external API. And then presuming the results of that is a successful response from them, then unpack some data, make sure it's in the right shape, and then save something else to the database. And ideally, wrap that all in a transaction and keep everything together and then return some data at the end of it. So that whole sequential operation, I've been using dry-monads to model that. I've talked about this on a few previous episodes. I'm really enjoying it. The more I lean into it, the more I find that it is just a really great way to wrap up that very procedural code. But ideally, do it in almost a functional way so that we've got these sequential operations that feed into each other. There's the railway-oriented programming stuff, which is associated with this idea. But there is a lot of boilerplate to these objects. So the way we've defined them is they have a class method called run that takes whatever the arguments are, and then it needs to pass those arguments into the initialize and then call run on the instance. So in order to define one of these objects, what we had been doing was def self.run and then all the arguments. And then inside of the body of that, it's new, and then pass forward all the arguments .run, and then define initialize to capture all of those and set all the instance variables, and then define the run method, which actually does stuff. Also need to define an Adder reader for all of those instance variables, which is a thing that I enjoy doing. So that's the interface I want, or that's the way that I want this class to work. I know other folks in the Ruby world feel differently. But that's the shape of the thing that I want, but that's a lot. And there's also I regularly would find myself forgetting to duplicate something that we put into the class method run interface into the initialize method. And it was just like, this is all just wiring up and plumbing. There's also the binding of the dry-monads do notation for the run method as well as the inclusion of the results type within dry-monads. Type is a strong word, but that gives us the success or the failure objects that we can create. So ideally, all of these command objects either return a success object or return a failure object. It's one of the two. And that's one of the things that I really like about them. But yeah, so much plumbing. So we define a base command, and the base command has the self.run method, the class method, and that method is defined very abstractly. So it's just args * keyword args. So we're capturing all of the arguments and then forwarding them on to new. So that way, I don't have to think about that interface. It basically just says, "Give me anything, and I'll forward it onto new." And the new or initialize is in charge of actually defining things. It also includes the result type. It includes the macro annotation for the run method, which is how dry-monads does its magic, that actually I had to include inline within the self.run, just because of the sequence of definition and the metaprogramming that's going on there. As I said, that sentence terrifies me a little bit, but hopefully, no one ever needs to look at this magic base class [chuckles] and figure anything out. So that was one part of it. That cleaned a lot of things up, so that meant I didn't have to write a ton of the wiring up code. Then there was still the noise of actually defining all of the arguments to these classes. They often take a handful of arguments because that's their job is to grab a bunch of things and do some work with those things. So for that, I have brought Adder Extras, which is a gem that I've talked about probably in previous episodes, I think so. But this is the first time that I've really leaned into it and used it. And it gives some very high level what look like macros are just class methods. But the one that I'm using is Adder private initialize, and that you can then pass a variety of values too. And it will then say, okay, this method accepts a required keyword arg, a defaulted keyword arg, and a positional argument or something to that effect. But it's a very, very concise way to express that and then also get the private Adder readers, which again is the direction that I want to go with all of this. So that's a bunch of things that I have said. But all total, it cleaned up these command objects very nicely. And now, when you look at one of these command objects, all you see is the run method that does the work. And the plumbing and the wiring up behind the scenes should just happen. I am concerned about the day that someone forgets to inherit from the space command, and then it's like, why does nothing work? I thought command objects just worked in the system. But we're going to deal with that when we get there, which is hopefully a while down the road. STEPH: I like how you're pushing at the boundaries of our comfort zone. I say our comfort zone because I imagine we feel similar. CHRIS: It is. We definitely got a shared comfort zone. [laughter] STEPH: Yeah, we have a shared comfort zone with inheritance, but you're pushing at that boundary of that comfort with inheritance because it is something that can be so painful. But you've identified an area where inheritance feels useful. And then it also sounds like a very meaningful...you're introducing this pattern and then trying to make it easier for others to follow this pattern. So it's a very intentional design decision of where we want to group these behaviors together and then make it very easy for other developers to then pick up this pattern and run with it, and then also work with these classes. So I am intrigued to hear how it goes and how others feel about the pattern as well. I also wonder, this is one of those areas where it feels like this very intentional design decision. Is it something that you think in the base class would be worth highlighting? Like, hey, here are the things that we are using in this base class. This is the intention of this base class. I don't know if that's maybe a comment or if that's something that's documented in the README. I know; I see your eyebrows went up when I said comment. But it does feel like one of those areas where it's like, hey, we have introduced this new concept. We want you to follow along. Here are some helpful guidelines. CHRIS: Those were mostly joking eyebrow raises because I have thought of that. I haven't actually gone to that level. But in the back of my mind, there's this pattern that we have within this application. Ideally, we're going to lean into it more and more so that A, we have a clear way that we do things within the app but also make that as understandable and discoverable as possible. I'm not sure if a comment in the class is the right thing or...so I'm deferring what I want to do on that for now because right now, it's myself and one other developer. We sort of developed this in tandem. So we were working together on it. We would pair in a bunch of the features. And what we have now is the crystallization of what we found useful. And we're both very comfortable with it. So there isn't the need to explain it. I'm almost thinking about it as just-in-time educational content around this piece of our application. I don't actually trust that I would do a good job describing it in the abstract because I know it. Like, to me, this thing makes sense right now. But I've been on the other side of stuff where someone was like, "Hey, this totally makes sense." And I'm like, "I don't know any of the words you just said," and so I felt that pain being on the other side. You could say I'm just being lazy, but I do think this is a purposeful delaying of that where I want to wait until I actually have someone to teach this to. And at that moment, I want to see what that conversation looks like. And I'll try and explain it to the best of my ability, but I'm sure they're going to ask questions, and I'll be like, "Oh, wow. Yeah. I hadn't even thought of that. But now that you ask the question, totally let me explain this part that I was going to gloss over and forget to mention." And so, ideally, that is what will happen down the road. And then from that, hopefully, some artifact becomes clear, whether it's a documentation page in the repo or a comment in the class if it's simple enough or maybe even it's a recording of a pairing session. And that's the artifact that we keep around that explains this piece of the application. So I definitely think a version of that makes sense, but I am not doing it yet. STEPH: It's funny; you're saying so many good things that I agree with. I love the just-in-time education; that part is fun. And yeah, there's a part of me that definitely still leans into the idea because we've talked about this in the past too, where we write down, in the moment, the things. Having that context when we're implementing it is really important and helpful. So even if it's not this grand explanation…which I really like what you said around having someone to explain it to or have that conversation with so that way you're documenting the useful bits, that part I like very much, but capturing the intent as soon as the change was introduced. So even if it is a very high level like, hey, we are using dry-monads and Adder Extras, even if it's just links to those things, that's something that I think I would still favor just to go ahead and start surfacing this is a pattern. This is a choice. And then, as you continue to work with the pattern, if you change your mind, it's still very easy to scrap that documentation. So I think if it were me, I would still go ahead and document it. I think it's that piece about discoverability that's calling to me so strongly where that's where I want to then highlight the things that are in use. So even if there's not an explanation, people can find the resources very easily. Because you're right, you did say a lot of interesting bits in describing this pattern. And the fact that we're talking about it now also just deepens my suspicion that it would be nice to comment somewhere, and perhaps a repo is a perfect place for it and just get it out there, and then it can always be revisited later and improved. CHRIS: Okay. I like that you are keeping me honest on this because I do think there's a certain amount that I'm just being lazy here and not wanting to do that because it is actually really hard to try and document something like this. Like, what are the important pieces versus what are the extraneous details that people don't actually need? I do wonder, so the pull request that did this refactoring and introduced this base command object that does have the explanation captures the point in time and whatnot. And so I wonder, is there a version of tagging important pull requests that tell the story of the application? A lot of things are just going to be like; this is adding a feature. It's the same as the other 30 pull requests recently that added a new feature. But this one is special from an architecture perspective. And so let's tag this, let's add a label. I don't know what it is but something that allows for discoverability of the story of how this application became what it is today because anything else I worry will go out of date almost instantly. But this pull request is true fundamentally in that same way that we say commit messages should capture as much of that detail. So I did do that writing for the pull requests/the commit message. And I wonder if maybe that's the best artifact for this moment but then the question of surfacing it and making it discoverable because otherwise, it's just lost in the sea of other pull requests. So I don't know. But I do like the slight push back that you're giving me here of like, yeah, but what if you did something though? And I'm like, yeah, that's fair. I should probably do something. STEPH: Being able to pin those specific PRs that have significant architecture changes sounds really novel, but I'm going to take this opportunity for me to be lazy. And if I'm joining a project, I don't want to read through what has happened. I just want to know what's true now. And if I go back and look at those PRs, I won't know if all of that is still relevant and how it's changed. So it sounds neat from telling the story of how an application has evolved. I like that sort of developer lens, and what are the things that we have tried and then changed over the years? But from I am onboarding to this application, I just want to know what's true today? What are the things that you want me to follow? What are the patterns that are going to be really helpful for me to look at? And so then, I don't know if I would use it in that context. And this may be one of those areas where I'm feeling overly skittish in response to the number of things that you said and the use of inheritance. Because I have felt so much pain of where I'm going up the tree to figure out what the heck is happening in the world and then to understand all of those pieces, and then swimming all the way back down to the class that I'm actually working in. So it could just be past experiences that are now influencing how I want to document or work with inheritance. It probably is. [chuckles] That's probably a big factor of it. It doesn't mean I disagree with it because those painful experiences are meaningful. [chuckles] CHRIS: Yeah. I think the foundational thing...I tried to start this with the context of like; I did a thing. This is another example of good idea, terrible idea; my favorite segment on The Bike Shed. I stand by it. I think it was useful. It does use things that we have traditionally moved away from. I say we because, again, I think we have a shared approach to development at this point. But I think it's worth it. I hear everything that you're saying about the documentation, but I've been burned by that so many times where the documentation is like, here's what's true now. And you're like, no, there isn't even a class called that anymore, and no less does it work that way. And so, my inclination is not to go that way. The solution that I have in mind is when someone is onboarding into the application, I don't expect there to be documentation and other things that I can hand them so that they can run. I expect to sit down with them and work with them. I'm going to pair with people when they join a team for a long time. There's a period where that's true, I think, and then you get to a certain size of an organization, and you're onboarding enough people regularly enough that that's a thing that you should get better at. But for I think a surprisingly long time, my answer I'm more than happy for it to be, yeah, we're bringing someone new into the team. Let's sit down with them. Let's spend the time. Let's tell them what's true because I know currently, and I can give them an up-to-date version of that. And ideally, as part of that, then update the static documentation, the repo, the README, the other things based on the conversation that we have and recognize oh, that that link is very out of date. Let me change that one real quick. But I'm not expecting to have comprehensive documentation for that. I'm expecting to use real human interaction to fill that gap. STEPH: Yeah, I really like that you're also calling out how fallible documentation is and how it has misled us so many times. I also love what you highlighted where when somebody new is joining the team, we are more than often going to sit with them and then explore the app together. And it just made me revisit that phrase that you used earlier about the just-in-time education. Because for this command object, you may join the project and not need to interact with this design pattern for your first couple of weeks, first couple months, who knows? So then it comes back to the idea of how when someone is in the space of where using a command object feels like the right approach, then how do we introduce them to this pattern and then make sure that they have the tools that they need? And if someone is accessible to then sit down and go with them, that's great. But if someone is not accessible, then I still want them to have at least a few of the resources that they need to dive into some of the more complex things that are being included. So, yeah, it's a tricky one. I like this thought experiment. CHRIS: But yeah, overall, I'm happy with it for now. I'm hopeful it will work out for us moving forward, and I'm hopeful that it will also be a sufficiently discoverable or teachable thing within the application. But again, I will certainly report back and see how that one plays out for us. But yeah, that's what's up in my world. What else is going on in your world? STEPH: Something else that's up in my world is I have pulled in a tool that I've used in the past, and I really like it. So I'd really like to talk about it here for a bit because I just find it so useful. And now that I've added it to this new project, it's just really top of mind for me. So I found that when working on a project, there are often times where I want to run something right after a deploy has happened, and I want that to be automated. I can do it manually. I can hop in, but then perhaps if you're deploying across many environments or many systems, you don't want to have to do all that manual work, or you also just want the convenience of you can set it and forget it. And that way, you know something's going to happen. So perhaps it's something where you want to change some data, or if you want to enable a feature flag, then this is really helpful. So the gem I've been using for this is called afterparty, where you can write automated deploy tasks that essentially behave very similar to migrations. So you can write a Rake task. It has a timestamp. You can implement the logic that you want to be run right after your code has deployed, and then afterparty itself, we'll check the timestamp. It will see if it has been run. If it's already been run, it won't run it again. Or if you like, you can set it up so that way, you can tell after_party to say, "Hey, after every deploy, I want you to run this particular task," but it's such a nice improvement to the workflow. And the other thing that I really like about this that I feel is a bit contentious is separating changing data outside of migrations. So I am a big fan of migrations are focused on changing your schema itself. But if there's actual data that you need to change, I really like when that is separated outside of the migration. There are definitely times that I understand it's really nice to just do it all at once, and it's easier. But anytime it starts to get even a little complex, I immediately want to write tests for it. And I can't test my migration. But if I'm changing some meaningful data on production, I want tests to back it up to make sure that I'm scoping correctly, that the outcome is exactly what I expect. It also makes it easier for other people to review. And after_party gives me that functionality so then I can have my migration. But then I'm like, oh yeah, but I still want to automate changing this data because that's often one of the complaints that I hear from people when I do ask them to separate into a Rake task, changing the data. They're like, "But I don't want to have to then follow up and then run this task later." And I'm like, that's cool. Afterparty has you, and you can automate it and not worry about it. So afterparty has been one of my favorite gems to add to applications. CHRIS: That's interesting. There's a bunch of layers to everything that you just said. I think I've worked with after_party on a project. I think we were working together on that project, if I'm remembering correctly. I have no bad memories of it, which given the nature of the tool, makes me think it did its job very well because its whole point is just like, oh cool, now you can just do this thing, and you don't even really have to think about it. Because there are plenty of other times where I've had to orchestrate or do a deploy. And then I SSH tunnel into production, which is a bad idea, and then I'm running Rake tasks manually. And so, I think the fact that I don't have any pointed memories of this is a really good sign for a tool like this. So that's a weird vote in its corner for me. You did say something that was interesting that I want to poke at a tiny bit which was you can't test migrations, and I think that's true. Like, I don't know of any way. And it feels like a thing that is sort of fundamentally deeply true. But I do wonder, is there any gem out there? Has anyone done a weird science experiment to figure out like, I would actually really like to be able to test my migrations? So I think the idea of having to pull data change out of migrations for the reasons that you said totally makes sense. But there are often times where I want to convert from non-nullable to nullable. And in the process, I want to backfill with a given value or something to that effect. And I like to encapsulate that altogether such that if it fails or succeeds, it's transactionally consistent. And I do wonder, could I wrap a test around that? I don't know of a way, and I think it may actually be the Rails testing infrastructure is just like no, we prepare your schema for you in the background, so it's just up to date. And therefore, you don't even have a way to be in a state where the migration hasn't run. But it's an intriguing one. STEPH: Yeah, that's probably a hard absolute that I said where you can't test it, and I'm sure there is a way to test it. How friendly or how easy that is to do, I'm really not sure of. It also feels like one of those areas where it feels like I'm testing this other service that I should trust fully, so then I'm not necessarily testing the migration itself. I'm testing some logic that I've added inside of the migration where I'm changing some data. And the example that you provided is perfect because that's one of those that I'm inclined to include in a migration. It's more like where we want specific users who have this value or in this category. And then, we want to migrate them from this data to the other data. And when we start getting complicated in our migrations, that's when I'm like, this is a bit much, and I'd really like a test that documents that we're doing this correctly. That's where I get squeamish about having data changes in migrations. But you do raise a good point. I don't know; I've never tried to test one. I've just always reached for this other approach, but that is more the pain point of if I could test this data change inside of migration, then that would work for me. That would solve my problem. CHRIS: I wonder if an alternative approach would be to just introduce an object or a class that does this work. So like a command object as it were, to do a call back to earlier in the episode, that does that data transformation because it's exactly what you're describing, for this subset of users do this. But if they're in this state, then do these things and create two new records for any user like this. That sort of stuff is really complicated. Definitely want to have some tests around it. But you're talking about a gem that allows you to extract it into a Rake task-like situation. But I wonder, could we just have a class for that? And I used to be a big believer in your migration should live forever, and they should always be runnable from the beginning of time. I've given up on that belief. That's one of the things that I've been like; I don't know. It turns out I've never done that. It's not an important thing. Just DB schema load is going to be fine most of the time. It's great for the past ten migrations to be around just to tell a little bit of a story. But I'm not tied to migrations being runnable forever. So the idea of you introduce this class, it encapsulates that data transformation. You can test it because it's its own thing. It will still be run within the context of the transaction of the migration. And then you throw it away down the road along with the migration, and you do that migration roll-up thing. It's just a different thought there, although I do like the...well, I guess that would also run automatically, but that runs as part of the deploy as opposed to after the deploy, which is meaningfully different than what after_party does because there might be one of these migrations that takes a long, long time to run because you've got a ton of data. And you want to decouple it from the true deploy release sequence that happens and the time limits that are there. So I think I've now talked myself in three circles, and I'm going to stop. STEPH: I like how you highlighted that part where it does decouple you from the deploy process where it's still automated; it runs afterwards. But say if it's something that doesn't need to hold up the deploy, you don't need to wait for this data to be migrated before the deploy can go out. Then that's a nice separation because then it can happen afterwards. Or if you do need it to happen part of the deploy, yeah, there's lots of interesting bits there. I feel like you and I could talk about it for a while. But we have a listener question that I'm really excited for us to talk about. So I'm going to hard pivot over to our listener question. This question comes from Jonathan. And Jonathan wrote in, "Hey, gang, longtime listener, first-time emailer. I've heard you reference retrospectives a few times as part of your normal development practice. In my limited experience with them, I often find retrospectives don't feel productive because team members are reluctant to raise issues without seeming critical or blaming another team member. I would love to hear you describe how you typically run retrospectives to foster open discussion and make it a productive use of time. Bonus points," oh, I love bonus points "if either of you have experienced rescuing an existing team that was not having productive retrospectives. P.S. Thank you for ongoing participation in the Ruby and Rails communities. I look forward to seeing a new episode pop into my podcatcher each week." All right, retrospectives. I love this question because I've definitely been part of teams that are really struggling to have a productive retro. So I think it would be helpful, as Jonathan highlighted, to go ahead and share how thoughtbot runs a retro. And then I'd also love to touch on some of the areas where I have seen teams really struggle to have a productive retro. So with the thoughtbot format, there are really two questions that we focus on. The first question is, what went well? And this starts the meeting on a positive note, which can help people get engaged before then we move on to heavier topics like concerns and issues. When we run a retro, we ask each person these two questions. So that first question, we go around to the room, and we say, "Hey, what went well for your week or for your last two weeks?" And then we document all of those positive things that people say. The next question is, "What concerns do you have, or what are you worried about?"And the goal here is to highlight issues early, which then gives us the chance to address them as they come up rather than waiting till an issue has grown out of control. And it's usually during the concerns portion that I often see retrospectives fall apart. The reason for that is hearing someone describing a concern is often something that can stir up a lot of emotions. And I know for me, it certainly triggers my instinct to where I really want to dive into that issue, and then I want to solve it. But by reacting to a specific issue and then trying to solve that issue, I'm interrupting that retrospective flow to then focus on that issue. And we may not get to a bunch of other important issues that people had. So that's often where I see retrospectives fall apart. And the way to fix that is to then have the team consensus that hey, this is a space where everybody gets to air concern. We're going to go around the room, so everybody has a chance to speak. We're going to document it, but then we're going to move on and then come back to this later. So when do we talk about concerns? So once everybody's had a chance to share their concern and that's been documented, during that process, you're often upvoting other concerns. So someone may bring up a concern that I also have as well. So when it's my turn to speak, I'll say, "I'd like to plus-one that particular concern," and then maybe add my own or just plus-one some of the others. So then, by the time that everybody's had a chance to speak, you already have an idea on…whoever's taking notes or if it's being ideally shared so the whole team can see. You can already see the concerns that most of the team is identifying with or that are the more popular concerns. So then, as a team, you can say, "Hey, we're going to focus on the top two concerns because that's really the amount of time that we have," and that way, we're focusing on concerns that impact the majority of the team. So at that point, then we can start talking about those specific issues and how we'd like to address them. And then out of that conversation is then the next part of the retro format, our action items. And then action items are where we can capture the things that we would like to try during our next iteration of work until our next retro. This is our experiment area. So then we can say, "Yes, we'd like to try something different, or we'd really like to monitor how this goes." And then one other fun thing that I typically include in retros are housekeeping. So then we can talk about time off, team celebratory events, anything like that that's helpful to highlight to the team. That's a quick overview of how typically I myself run a retro. Chris, do you have anything you'd like to add or anything that I've missed? CHRIS: No. I think that that mirrors pretty well the best retros that I've been a part of. There are a couple of things that I think I would add or emphasize in that. So one is foundationally, with a retro, what are we doing? What's the goal? And the goal with a retro is to identify and evolve our process. So identify where there are any bottlenecks or things that aren't working, and then ideally change things over time. I've been on many teams where just the same issues get brought up over and over in retro, and nothing changes. And that will just completely deflate the team. And so, if that is happening, that's a fundamental thing that we need to fix. And I can totally understand folks being like, "Retro is awful. We just sit down and say the same things, and then nothing ever changes." If that's happening, we have to fix that at a more fundamental level. That is going to be more than a retro's worth of effort. But ideally, retro is now this structured space each week, each iteration, whatever it is where we are discussing what's going on and ideally, slowly, incrementally making the process slightly better. In my experience, it's something that I really love because I come to associate it with stuff is going to get better now. That's what retro means. If that's not the feeling you have, then I totally get why you wouldn't want retro. But I promise that that can be a reality. And then to touch on some of the particular procedural points, everything you said definitely maps. And I've found that structure works really well, but there's a lot of subtle things in that structure that I think are important to highlight. So one, going around the room and actually asking everyone individually for their thoughts, I find to be so useful because it's very easy for one or two more vocal individuals to just dominate the conversation. So particularly by starting with what went well and then also by actually going around the room and requesting "Everyone reply to this question please," even if it's just like, "Yeah, you know what? It just felt like a good week." That's an answer we'll accept but ideally, a little more structure or a little more meat to it. But I find that to be really important. Likewise, I have found that having a facilitator, so someone who is guiding the retro but not actually a part of it. They're not going to be saying what went well or what didn't go well. They are just directing the conversation and somewhat critical as you're going around and asking for concerns. They are the person whose job it is to prevent the team from starting to try and address the concern when it's first voiced. So ideally, we're just collecting the concerns. We're collecting the plus-ones so that we know which are the more prominent ones, and then we can focus on those. And I think that idea of the plus-oneing of concerns and then really focusing on the ones that have more folks that are concerned about it feels really critical in my mind. So ideally, we are a team. We're working as a team, and if one person has this gripe that they really feel deeply, but nobody else really cares about it; ideally, we find a way to help that person not feel that way. But that's not necessarily where the team collectively should put all of their energy. So yeah, that's a bunch of little pieces. Also, just as a note, we'll include these in the show notes, but there are a couple of previous episodes, so Episode 132: “What Went Well?” is a discussion between Derek and Sage, previous hosts of the show, talking about retros. Episode 172: “What I Believe About Software” was the first guest visit by a certain Steph Viccari. And so that is a wonderful episode in which we dug into retro because it's one of our favorite topics. Also, Episode 299: “Is Agile Over?” We definitely touched on...that was a pretty recent one, but we touched on retro. Then there's also a video on Upcase called “Running a Retrospective” that basically describes exactly this process and shows actually an example retro and running through it. So there are lots of other things that we can point out here. But again, I think fundamentally, what are we doing, and how are we doing it? If we can answer those questions well, retro is going to be great. If not, it's probably not going to be that great. STEPH: I appreciate you calling out all of those important nuances because those nuances are what lead to then a retro feeling more productive. And to address Jonathan's other question around if people are feeling timid to bring up an issue because they don't want to blame anyone, then I think to address that one; specifically, you have to come to retro with a WE mindset. And I think HBO accidentally sending a test email is a really good example of that. Because in the Twitter thread, a bunch of other I presume developers were commenting and responding in support of the person that sent that out to say, "Hey, you discovered a missing safety net in the system," or the fact that it was fairly easy to make this mistake and send it out. So if you come to retro with this mindset of if a mistake was made, how can we as a team improve this so then it's less easy to make that mistake? Then you won't have the sense of we're blaming this on one person, but instead, we as a team are responsible for helping each other out. CHRIS: It's interesting to have that conversation in the context of retro because I don't necessarily think of retro in exactly this way. But there is the idea of blameless postmortems, which come out of the Google Site Reliability Engineering; I think it's a book, maybe it's a website. We can include a link regardless. But that idea of blameless postmortems of collectively as a team, this thing made it out into the world, this bug, this problem. So we need to own that as a team, and we need to have a blameless conversation around that, just talking about what happened. And there are subtleties there. And that's a nuanced idea that needs to be evolved, but that is at least some writing that exists in the world that talks specifically to that part of it. That said, I wonder if a true postmortem, so a distinct meeting just dedicated to those more pointed issues, might be more relevant, and then retro is more of a shared overall conversation. But if there are smaller versions of that, then I think using that framing could be really helpful in retro. STEPH: Yeah, I think you said that perfectly where there needs to be team ownership over all of the issues that are being discussed. And I think there is one other very tricky area to navigate with having a productive retro. And I don't know of a better way to say this. But you have a grumpy goose on your team. You have someone who doesn't like retros, and they're going to be negative, and they're going to be vocal. And that is a hard one. I have been there before. And I often approach that situation by speaking with them specifically around what are your concerns with retro? Are you willing to at least buy-in and give this new format a chance? But you essentially need them to buy in or have leadership buy-in so then they know to follow suit as well that this is a team process that we're going to improve and work on together. And if you don't like it, then that's what retro is for. So how we can make this a better, more productive meeting? But just showing up and being grumpy isn't helpful. And then helping people who have been burned by retros overcome that negative reaction to retros is something that takes time. CHRIS: Oh yeah. The grumpy goose just affects everything on the team. But definitely retro is one where I've seen that particularly pointed. I think in those cases, the best luck I've ever had is to, like you said, have a separate conversation but have the conversation at a higher level. So the question isn't about do we have retro or do we have it in this shape? The question is, do we think we are operating at our best? Do we think everything is going perfectly? And almost never will the answer be "Yeah, this is great. We have no bugs. We're moving as fast as we possibly can. Everyone is happy. No one is burnt out." And so if we get to an agreement that is like, well, yeah, sure, there are things that we could improve, then I think that's a toehold that we can then build on and say, "Okay, so how do you want to go about that? I am fine to explore a different approach than retro as a meeting to continually improving and evolving our process. I'd love to know what thoughts you have, Mr. Goose." But if they don't have an alternative, retro is the most effective structure that I've found for this continuous feedback loop around the process. I'm very happy to find an alternative, but I critically think we need something like that. And so if they're going to be pushing back on retro specifically, then I'll bump up to the higher level and say, "Okay, how do you want to be improving our process? Let's try something else, but let's make sure we are asking the question of how do we improve our process and is that succeeding?" And also, stop being so grumpy. Come on, what are you doing? STEPH: [chuckles] I recognize that approach so much because then it really gets to the heart of the purpose of retro whether it's actually called retro or how we handle it is not significant, but the fact that we together as a team can get together and discuss how to improve. That's really the important thing that we're after. And retro just happens to be the format that I use and really enjoy. But like you said, it's always open to each team's interpretation. On that note, Jonathan, I hope this quick overview of the thoughtbot retro has been helpful. And we will also include some other links that also highlight how thoughtbot runs retros and some other discussions that we've had about retrospectives. But on that note, shall we wrap up? CHRIS: Let's wrap up. The show notes for this episode can be found at bikeshed.fm. STEPH: This show is produced and edited by Mandy Moore. CHRIS: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review on iTunes, as it really helps other folks find the show. STEPH: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed or reach me on Twitter @SViccari. CHRIS: And I'm @christoomey. STEPH: Or you can reach us at hosts@bikeshed.fm via email. CHRIS: Thanks so much for listening to The Bike Shed, and we'll see you next week. All: Bye. Announcer: This podcast was brought to you by thoughtbot. thoughtbot is your expert design and development partner. Let's make your product and team a success.

Werewolf Radar
EP 164 - Ghost Train Tales, The Pale Crawlers, Haunted Forest Found on Google Map

Werewolf Radar

Play Episode Listen Later Jul 26, 2021 60:07


Werewolf Radar EP 164 - Ghost Train Tales, The Pale Crawlers, Haunted Forest Found on Google Map In the uncharted areas of the world, you can find mysterious places that hold great power. Some hold great horror as well. One holds a lollipop. When you go out tonight, bring Paranormal Comedy Podcast Werewolf Radar along with you...we have the information you need to save your life. In This Episode: Nate puts coal into the engine and takes us into the realm of Ghost Trains Tales. Stalled vehicles on the tracks. Children's hands pushing cars and leaving prints. Some of these tales are very heartwarming as they are tragic.  Jordan enters the ring with a new cryptid to enter the battlefield., the Pale Crawler. Jordan goes into the history, whereabouts, and recent sightings of the Pale Crawler. Goosebump Warning! Roger then opens up Google Maps and shows us the haunted forest in California found on Google Maps. This place is tagged with a bizarre purple coloring and online commenters agree...Go there at your own risk.  Werewolf Radar is a Paranormal Preparedness (and Comedy) podcast. Give it a listen. It'll change your life, it changed Bigfoots. -------------------------------- If you laughed, loved, or lived because of this episode, consider becoming a Patron and supporting the team!  You'll get access to exclusive content and other, mysterious rewards, so check it out for more info.  Thanks to Chuck Coffey for our snappy little theme song, and, as always: Punch the sky, Spaceman Joe! Werewolf Radar Patreon Discord

Pajama Gramma Podcast
Rake Someone Over The Coals To Supersize Your Business!

Pajama Gramma Podcast

Play Episode Listen Later Jul 23, 2021 14:10


Rake Someone Over The Coals To Supersize Your Business! Pop in daily for a dose of different business building perspective: https://facebook.com/supersizebusiness #supersizeyourbusiness #whatthingsmean #rakesomeoneoverthecoals

Not Your Mom's Romance Book Club
Nine Rules to Break When Romancing a Rake by Sarah MacLean

Not Your Mom's Romance Book Club

Play Episode Listen Later Jul 19, 2021 94:58


Ellen and Mom discuss the rakes, ruinations, and riding astride in Nine Rules to Break When Romancing a Rake by Sarah MacLean.  Plus, we list out the clean and HOT reads in our NoYoMo Beginners Guide to Reading Romance.Come hang out with us! Twitter/Instagram: @notyourmomsromFacebook Group: Not Your Mom's Facebook GroupEmail: notyourmomsromancebookclub@gmail.comNot Your Mom's Romance Book Club is part of the Frolic Podcast Network. You can find more outstanding podcasts to subscribe to at Frolic.media/podcast

The Current
Rachel Johnson on the personal and political dynamics of Brexit

The Current

Play Episode Listen Later Jul 15, 2021 22:14


Rachel Johnson, the sister of British Prime Minister Boris Johnson, campaigned against Brexit, while her brother hung his political hat on the phrase "Get Brexit Done." She joins us to talk about political and personal crises, the family dynamics of being a staunch Remainer, and her new book, Rake's Progress: The Madcap True Tale of My Political Midlife Crisis.

The Money Show
Business insurance under the spotlight as business insurance claims rake up

The Money Show

Play Episode Listen Later Jul 13, 2021 4:46


Guest: Ryan Woolley | CEO of Insurance Claims Africa See omnystudio.com/listener for privacy information.

The Bike Shed
297: We're Making A Pixar Movie!

The Bike Shed

Play Episode Listen Later Jun 22, 2021 48:57


Chris gives the deets on that new new – (he joined a startup!) and laments about the back button being so complicated. Steph talks about extracting an untrustworthy service and likens the scenario to making a Pixar movie. You don't wanna miss this hero's journey! Eric Bailey's bunny updates (https://twitter.com/ericwbailey/status/1389332217088851971) Katrina Owen's Therapeutic Refactoring Talk (https://www.youtube.com/watch?v=J4dlF0kcThQ) EnjoyHQ (https://getenjoyhq.com/) User research platform Aurelius (https://www.aureliuslab.com/) also a user research platform Dry Monad (https://dry-rb.org/gems/dry-monads/1.3/) (part of dry-rb (https://dry-rb.org/)) Previous Bike Shed discussing dry-monads (https://www.bikeshed.fm/243) Railway Oriented Programming (https://fsharpforfunandprofit.com/rop/) Bike Shed "Seeking Calm" Episode (https://www.bikeshed.fm/279) Previous Episode Discussing Multi-Step Forms (https://www.bikeshed.fm/295) Discussion thread on Inertia repo re: back button cache (https://github.com/inertiajs/inertia/issues/247) Transcript: STEPH: Yes, I was getting text messages from you where you were like, “Go on without me.” CHRIS: [laughs] Leave me behind! STEPH: [laughs] No developer left behind!! CHRIS: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Chris Toomey. STEPH: And I'm Steph Viccari. CHRIS: And together, we're here to share a bit of what we've learned along the way. So, Steph, how's your week going? STEPH: Hey, Chris. It's been a very busy week. There's been a lot going on. But the most delightful part of my week has been that Eric Bailey, another thoughtboter and also a former guest on this show, has a tiny, little baby bunny living in his backyard, and so he has been sharing updates about this little baby bunny. In fact, he's been sharing some pictures on Twitter as well. So I'll include a link in the show notes so other people can experience the joy. Also, the name of the bunny gets me every time. But they have named the bunny “Corndog.” CHRIS: Checks out. It seems like a very obvious name for a small bunny. STEPH: It gets me because that's such a big name. I don't know why it's a big name, but it feels like a big name for a little bunny. CHRIS: I can say yeah, it's a cornball. Yeah, that's a large name. And so a tiny bunny is a...it's like Little John from Robin Hood. It's perfect. STEPH: [chuckles] I kept referring to him as Corn Nugget, I guess, because of size. But yes, it's not corn nugget; it's Corndog. [chuckles] So watching Eric's little bunny has been delightful and a wonderful addition to the week. How about you? How has your week been? CHRIS: My week has been great. I was off on vacation last week (so you had a guest on), which was fun to just take a week off and reset the system. But actually, this week has been interesting. It was my first full-time week with a new startup that I have joined. I think, yeah, that seems to be the truth in the world. So a bit of a shift from what I've been doing for the last year and a half, almost something like that. The reason there's hesitance in my voice is because I've actually been working with this organization for six months-ish, depending on how you count it. I've been having conversations, and then it's slowly grown over time where it was just conversations, and then it was an afternoon a week, and then one day a week, and then two, and three. And finally, we decided we think we've got an idea. We've got a thing that we want to build. And so I am the developer on this team, but we are an early-stage startup trying to build something. I'm now full-time on the project. I rotated down the other projects that I was working on from a freelance consulting perspective, and now I'm trying something new. So it's a very different vibe. Even though I'd been working with the organization for a long time, this week just felt so much more real. And there was so much more space, so much more room for activities, having a full week to actually work on things. So yeah, it's very exciting, it's very new, it's very early stage, so all of those things are true. But there are a lot of great aspects to that, and I'm super excited about it. STEPH: That is some big news. That's a big change too. Well, I guess with consulting, there are the stresses that go into consulting and then changing projects and managing the projects that you're taking on. But then to joining a team and such an early startup team too...anytime, someone says startup life, I'm always like, well, tell me more. How calm is the startup life, or how uncalm is this startup life? CHRIS: It's somewhere between calm and uncalm, I would say, but in a, I would say purposeful and intentional way. I was looking for...this has largely been true over the entire time that I was freelancing, but freelancing was a way for me to keep the lights on, and stay engaged with tech, and continue working, and frankly, have more conversations and meet more organizations. But I was looking for something that I could engage with a bit more. I was looking for, largely, something like this. So it definitely is occupying a different space in my head than, say, any individual consulting client where with consulting, I was pretty rigid, you know, these are the hours that I'm working. When I'm off the clock, I'm really not thinking about it too much. I'm responsive if I see an incident or something like that or if the database falls over; I'm going to look at that on the weekend but otherwise, largely not doing anything. Whereas with this project, I'm somewhat purposefully allowing it to have a little bit more space in my head off-hours, that sort of thing. And I'm more invested in the work. It's not just a thing that I'm doing, but it's a project that I believe in. It's something that I want to exist in the world. And so, I'm engaged with it in a different way in that manner. I'm also engineer number one, so I'm choosing all of the technologies and setting the standards. Thankfully, there's a lot of good thoughtbot material out there that I can link to, which is great. But yeah, so it's mostly within the context of what I think startups can be. The expectations and the way that the team is working is very reasonable. And I think it's more for my own self. I'm allowing it to occupy a little bit more of my space, but in a fun way so far. STEPH: Well, along that line, in terms of choosing the tech stack and starting greenfield, I am curious to hear more about the type of project that you're going to be working on. But I'm also recognizing y'all may be in stealth mode. Is that where you're at, or can you talk a bit more about the type of work you'll be doing? CHRIS: We're stealth-ish right now, I would say, partly because we're likely in the process of rebranding, and renaming, and things like that. So partly it's just like, oh, I probably shouldn't say that. But at some point, this will become public, and so at that point, I can probably be a little bit more open about it. But at the end of the day, we're building a financial product, FinTech sort of thing. And the tech stack is relatively straightforward. I'm actually using my preferred tech stack is...I got to choose, so it's Rails, Inertia, and Svelte with some TypeScript because why not? And I love it, and it's fantastic. I continue to believe deeply in that tech stack. So, yeah, that's most of what I think is good to say now. But I think over the coming weeks, I'll be able to say more and share more. And I certainly will be able to talk about the details of building and growing a team and things like that. STEPH: Awesome. Yeah, you answered my other question too. I was going to ask what tech stack you chose. CHRIS: I chose the tech stack, the one with the acronym, which I don't even know...the STIR stack I think we went with or something. STEPH: I was about to say I don't remember the acronym. [laughs] CHRIS: I think I never committed to an acronym previously, and then that was the one that got thrown around on the internet. I think I just was like, in the next episode of The Bike Shed, I'll choose an acronym so STIR, why not? STEPH: I like it, causing a stir. CHRIS: But yeah, so it's a pretty sizable shift in my life. But frankly, I don't even know exactly the shape that the coming weeks will have. So it will be interesting to report back as things evolve and as new concerns and considerations come up. But, yeah, we'll save that for future weeks. For now, what else is up in your world? STEPH: Yeah, it's been an interesting week. There have been really two things on my mind, so one of them has been focused on writing a task that's going to process a sizable CSV. And then it's going to essentially enqueue a bunch of jobs and send off a bunch of data to other third-party systems. So that's been a big focus of the week. The other topic is what I'm going to call extracting an untrustworthy service into its own service. And I know that's a bit vague, but I've got both of those topics. So which one would you want to hear about first? CHRIS: I definitely want to hear about both. But because you veiled it in mystery and said, “An untrustworthy,” that one's just going to call to me a little bit more. So yeah, what about this extracting and untrustworthy service? What more can you say there? STEPH: Good question. I'm glad that you picked the mysterious one and started there. That feels right. So this is a part of our codebase, and it's very related to also the task that I'm writing. So to provide a bit of context, this particular portion of the codebase manages a big part of where we are sending data from our application over to third-party systems. And it's a very important feature of our application. And it's also probably one of the gnarliest sections of our application in terms of there are tons of conditionals based on which type of service we're sending to or the discreet customer that we're sending it to, and any particular preferences that they need and how we're sending that data. And then there's also just a lot of room for ambiguity and errors. And when we are sending that data, was it actually successful? And what if it was successful, but we still got back error messages? What does that mean? Is that successful with warning? And so there are just a lot of unknowns. It's also one of the less tested areas of the codebase. So even though it's important, we really don't feel confident making changes at this point until we've added some more test coverage. And testing it can be a beast because right now, we really just want to add some security around that section of the codebase. So we're often going for high-level tests, which are then our slower tests, but then also means it's hard to test the more granular aspects of that code. This is that untrustworthy section of the code in terms that we're a bit skittish to make changes, but yet it's a very active part of the codebase, so not the best place to be. But we also recognize that this part of the codebase would be really well-fitted to live outside of the application. It really doesn't need to live with the rest of the application. And there are other services that need to be able to talk to the service as well. So instead of having it grouped together, which -- It's funny. I see your eyebrows go up when I talk about -- For people who can't see, Chris raised his eyebrows when I talked about extracting this to another service. [chuckles] CHRIS: That doesn't sound like me at all. I don't ever… STEPH: [chuckles] And since we do have other services that need to be able to pull data or to talk to this particular portion of the codebase, we are looking to then move it out into its own application, so that way, it can stand alone. It can focus on this one task, and then other services can benefit from it as well. And there's been an interesting discussion around, well, we need to make changes to this codebase. And we also have some recognition that we need to make improvements. Do we go ahead and go heads down for a bit and improve the section of the codebase, add more test coverage, get to understand more of what this code does, where the risks are? Or do we go ahead and extract it in its current form to the new greenfield space and just essentially port it, and then we work on it from that space? And so, there's been a conversation around which one do we do first? And I'll tell you my thoughts, and then I'd love to hear yours. As one of the primary individuals that's been working in this codebase, my stance has been let's leave it in place for now because I want to build some confidence around what this does. So I really want to have some confident understanding about the requirements, about when we extract this, what is that going to look like? But also, I feel like I'm in a place where I'm starting to understand the beast enough that I want to continue that progress and add some testing around it before then we just move it to this new location. And I can't decide if that's one of those decisions where like, I just feel too close to it, and extracting it feels risky to me. So I feel like we're adding on this extra level of complexity. Like, this is already code that's hard to understand. And then we're going to add this network connection on top of that where then we have to talk to it in a different way. And in my mind, that's adding another level of risk and another level of having to debug this service. So my current approach is let's leave it in place. Let's try to identify some low-hanging fruit. Let's go ahead and add some more tests. And I feel pretty good about that decision. I'm curious, what are your thoughts? CHRIS: I have a bunch of them. The first is that the story that you're telling here feels like the hero's journey of software development. Like, all right, we got this gnarly bit of the code. It's super important. It's super complicated. It doesn't really have any test coverage for historical reasons that are complicated, but here we are. What do we do? That story feels so true. It feels like there are nine Pixar movies about it if Pixar made movies about writing code, and they would be great movies. STEPH: That's amazing. [laughs] I would watch those movies. CHRIS: I think of it like Katrina Owen's therapeutic refactoring, which I feel like is probably my most referenced...It's one of my two most referenced talks that I bring up on the show all the time, but it is almost exactly about that sort of thing. We've got this gnarly piece of code. It's super important, but nobody really knows how it works. But we know it does work, which is an interesting bit. And so to the question of would you extract as is or would you try and shore it up before you extract it? I am 100% on the side that you are on, which is let's shore this thing up before we move it over. Because moving it over, like you said, that's going to add the additional complexity and failure modes of network latency, network timeouts, async disconnects, whatever, any of those complexities. That's another set of failure modes that you'll be introducing or just complexity and things that you have to think about. So that feels complicated. Also, there's probably a poor analogy that I have in my head. But imagine that you're moving, and your bedroom is just a complete mess, and you're like, oh, there are some old to-go food containers over there. And I haven't done my laundry in a couple of weeks. I'm just going to throw it all on a blanket and take it to the new house, and I'll figure out what I want to keep on the other side. It's like, that doesn't feel like the right move. I would definitely throw some things out before I move to a new house. So I definitely lean in to let's clean this up and understand it so that when it's in the new place, we have a slightly more contained, understood, manageable version of the software to try and extract to a service. STEPH: I feel very judged for my moving style. CHRIS: [laughs] I mean, obviously, with software, you're doing the one thing. But did I just describe exactly how you move house? STEPH: [laughs] CHRIS: To each their own now, you know, whatever works for you. STEPH: No, I'm with you. I'm definitely the person that's going to clean up first before I put stuff in boxes. I'm going to try to give away as much stuff as possible. CHRIS: It's a great time to just figure out what's true in your life or what's true in your software. I am intrigued. So yes, I did raise my eyebrows when you mentioned extracting a service and other services talking to each other. In particular, the way you described this piece of the system, I would be surprised if there weren't data requirements and/or transactional consistency things that you wanted to uphold. And that's one of the main things that causes me concern when we're extracting services is if this thing still needs to know about a bunch of different pieces of data and if it's going to make multiple updates to different records where if one succeeds and the other doesn't, we should roll back the whole thing. You lose all of that by moving to a service. And so that's where my broad…like, I'm always going to question if we're going to surface this. So I'm intrigued. Is this thing a very functional piece of your system where some data comes in, some stuff happens, and you get data out at the end of the day? Or is it more operating on related data within your system and potentially updating records after the fact? STEPH: Yeah, that's a great point. For this area of the codebase, it does feel more functional in terms that we have data, and we essentially want to notify other people that we have this data, and then we want to share it with them. So there is still that coupling of where we need access to those values. So if we're sending it over to the new system, either that new system needs to be able to read from the same database, or we have to send all of those details over to the new system. So then it can build up the message and then send it over to the other third-party systems. So it feels more functional, but there are still some of those requirements that we need to think about. CHRIS: Okay. That definitely clarifies things. And I wouldn't say that I have a unified theory of services. But what you're describing feels like the type of service that I'm more open to. It sounds almost like a SendGrid where I want to deal with all of my application data. And then I send a bunch of structured data over to SendGrid, and their job is to send an email and retry as necessary or send a text message or even do a voice call if it's Twilio or something like that. And so they're really good at those weird things and the failure modes that exist in those communication channels. But that's not logic that I need to live in my app. And so what you're describing there definitely makes sense as something that could comfortably be extracted to a service and not have more complexity be introduced by that. You did mention something about services talking to services and other things. So is the idea that this would be extracted, then other parts of the system would also use it to communicate out messages or something like that. STEPH: Yeah, one of the motivations for extracting this is because we have another application that also wants to perform similar behavior. So now we have two applications that need to do similar work, and they feel more in that line of functional work where it would be great if we could share this. But it doesn't fit in the space that we want to extract it in regards to extract it to a gem and make it shareable. It feels more appropriate for it to be its own service and then also capture. Because the other nice thing that we want to include that we're doing now as well is we want to capture feedback from whenever we are sending that data over to other systems. We want to know, hey, how did it go? Did you give us back that successfully, but maybe with some warnings or some errors? Maybe you accepted the data, but then you also gave us a response about something else. I think one really important question to consider is when is it trustworthy enough to extract? Because we know we're headed down this path. So at what point are we ready to then go ahead and extract this over to its own service? And that was the more interesting conversation because I think those who were in favor of extracting it now had the concern that we can't add test coverage in its current form. So my first response was if I need to make changes and I can't add test coverage, I will sound the alarm, and we will reconsider. But my goal right now is to turn this untrustworthy service into a little more trust. Just dial up the trust a little bit further, and then we can port this over. So then, as we do add some network complexities on top of this, we will at least have more faith and understanding the underlying behavior of the system. But then we still want to understand that it's not going to be perfect. And we're not going to wait until it's perfect before we do extract it. But that's the tale or the mysterious extracting an untrustworthy service. So I think it will be an interesting journey. And it was a very interesting conversation that I was excited to have your thoughts because I know you and I often lean so far away from extracting stuff to a service that it was an interesting conversation to have around; well, this code is a bit of a mess. When do we start to tackle that mess? CHRIS: I like that you didn't even frame it necessarily in terms of that, but I still definitely got there. I was like, wait, wait, wait, but let's actually talk about whether or not. But this is definitely the sort of thing that I think makes sense to consider as a service extraction. I think the question that you're asking around when do we feel good enough in its current state to do the extraction? That's right on the line of art in the software world as opposed to the science of this is how we connect HTTP. So I'm very interested to see where you get to both with that question and how you actually make that decision and then how the extraction goes. And I imagine this will be the sort of thing that goes on for a bit of time. So it feels like we could make a mini-story arc that'll span a couple of episodes, and you can follow the characters on their journey. This is the Pixar movie. We're making a Pixar movie. STEPH: We're making a Pixar movie. They're missing an entire genre for their Pixar movies. If they just appeal to developers, that'd be wonderful. I'm so in for that. We should write Pixar. CHRIS: There are more developers every day, so think Hackers meets Up. That's what we're going for. We're just going to fuse those two together. It's going to pull at your heartstrings, but it's also going to talk about hacking the Gibson. It's going to be great. STEPH: Oh man, you reached for the most heartfelt one going for Up. That one has the toughest beginning. [laughs] CHRIS: That's what I'm going for here. STEPH: For anyone that hasn't seen Up, you can go watch the beginning of it. Just be prepared. CHRIS: And if anyone hasn't seen Hackers, also be prepared. [laughs] STEPH: Which is me. I haven't seen Hackers. CHRIS: All right. You still haven't. All right, that's a thing we need to work on. STEPH: [chuckles] CHRIS: But cool. Okay. So we're going to work on the Pixar movie. You're going to update us because we need to actually gather the information. But yeah, we'll come back to that in future episodes. But shifting gears just a little bit, actually, I have a couple of things, two small things, and then one more sizable thing that is more just like, I'm confused. So yeah, we're going to go in that order. Thing number one is, we are, again, it's a very early-stage startup that I'm working with. And part of what we're doing that I really like is that we are talking to potential customers, potential end-users of the application doing lots of user interviews, which is a thing that I have more from a distance seen often. But now, because we're actually working as a distributed team, we're remote because that's the nature of the world right now. We'll probably meet each other in person at some point, but that's down the road. But all of these conversations are happening over Zoom calls, all of these user interviews. And so I made the suggestion that we use a tool to actually manage those. And so we're using a tool called EnjoyHQ, I think is the name of it. There's another similar tool called Aurelius. We can put the links in the show notes for both of those. But what it does is it basically makes the video available after the fact. I think it automatically transcribes it, and then it allows you to annotate and add notes and things like that, which is great for aggregating this body of information that we're collecting over time as we do all of these user interviews and start to tag common themes that we're seeing. And bringing them together will also allow us to revisit them. But for me as the developer, I've been to a few of them, but not as many as the rest of the team. And what's great is I've now taken to...as I'm doing more mundane…cleaning up email or whatever sort of tasks, I will just put on one of these videos in the background at 2X. And what's great is I can now just hear literally the voice of the users of the application. What are the words that they're choosing? How are they talking about it? What matters to them? What doesn't matter to them? What do they get really passionate about? And it's been just such a wonderful thing to have available. It's almost like a podcast of our app that we're building, and it's like, that's awesome. STEPH: I love that. Yeah, I would love to be able to hear from people that are using the application. And like you mentioned, just turn it on in the background so that way I can process what they're saying. But then, I don't know, depending on what they're saying, maybe it needs full attention or otherwise, maybe you're able to just absorb little bits and pieces while you're hacking away on something else. And now I've got the word hacking stuck in my mind. [laughs] CHRIS: It's the best word to describe what we do. Yeah, there's definitely a version of someone should be reviewing...someone's actually doing the interview, so they're going to be very close to it. And then there maybe is a secondary someone's watching it closely and trying to glean, and categorize, and all of that. And I could potentially be any one of those, but I really like this version of this is just a background soundtrack that I'm exposing myself to so that I'm all the more immersed in the problem space that we are working on. And it's one of the things that I fundamentally believe about software development is developers shouldn't be hidden in the corner just writing code. We should always care about what the end-user wants, and what better way to get there than to actually hear their voice and hear the words that they're using. So this is a magical little trick that I have now found that I'm like, oh my God, this is amazing. STEPH: Funny enough, I had a similar experience this past week where I realized I was feeling very disconnected from the people that are using the application and also the people that are setting priorities for the work that our team is doing. And that is something that I'm very accustomed to with thoughtbot that we always want to be part of the team. We're not necessarily just we can churn through a backlog. But we also really want to be in touch with product decisions, and share opinions, and then also be in touch with users too. So I had some similar revelations this week where I realized I was feeling very disconnected where I was picking up tickets, and I was like, I don't really understand why this is great or how this is helpful. And so, I shared that with the team, and someone encouraged me to attend a specific meeting. And that was wonderful because then I got to hear from the people who were creating those tickets and then giving them a high priority because something was urgent and why it was urgent. And having that insight was huge to me. And I realized that it was incredibly motivational as well. Because then I'm like, yes, okay, I understand how this is going to impact someone. And I'm now very encouraged to get this done. CHRIS: I think that idea, that ethos of wanting to get into the user persona and understand that better is a very strong thoughtbot ideal. So it's unsurprising both of us share that. But yeah, that was a really great thing and particularly a tool that facilitated that in a really straightforward way, which I appreciated. Another thing that I used this week, which I've talked about at length in a previous episode, so we can link to that episode, but it's a project called dry-monad. So there's dry-rb is the collection of, I think, a set of gems, but dry-monad is one that allows for defining sequential tasks, so tasks that you have to do a bunch of steps in order and the outcome of a previous step will be the input of the next part of the process. So it can fail in a bunch of ways like, okay, fetch this thing from the network and then look up a user based on that. And then get the user's profile, which may or may not exist, and then assuming that all of that's gone well, actually persist to this new record, to the database. And they're really finicky to write that sort of sequential processing. And so I actually had written that thing manually. And part of it was I'd wrapped the whole thing in a database transaction, but I was trying to make it so that if something went wrong, I would manually roll back the transaction. And then I wanted to return an object to the caller that indicated that things had failed and an error message or something like that. And that was actually really hard to do because of the way transactions work. The mechanism that I was using was apparently deprecated in Rails. And so the whole thing was just kind of confusing, and it was a bit messy in the code. And I knew in the back of my mind that dry-monad exists. I've used it before. I've really enjoyed it. But I was trying to minimize the amount of new technologies that I'm bringing in this early on in the project. It's like, yeah, I'll bring that in when I need it. But finally, I was like, you know what? I think I've reached that point. I grabbed it, brought it in, and I haven't worked with it in a while, but I was very quickly able to refactor my class to use dry-monad. It cleaned it up immensely. The tests remained identical, which was really interesting. I didn't have to change anything on the test side. And one of my tests was failing before and then passed because of the introduction of dry-monad. And yeah, it was just like a win-win-win, and also the fact that I was able to revisit dry-monad as a library and just get running with it again was really interesting to me because it is a bit complicated and interesting in how it works. But again, I was able to just sort of pick it up and run with it. So that was wonderful. And I will now all the more staunchly suggest that folks reach for that when they have more complex, procedural type code that they need to write. STEPH: I remember you highlighting dry-monad before in previous episodes and talking about the pain of writing that sort of procedural code, but then we also want to return something helpful. And I looked at it briefly, but I haven't used it. But now that you are reminding me of it, I'm very interested in it because I agree that process is difficult to write, at least in Ruby it's difficult to write. I understand the hesitancy that you have around bringing something in that's new. But then if you recognize that it's going to be a theme in your application around this is something that we're going to do a fair amount, and we want to do it in a clean, efficient way, then it starts to feel more reasonable to say, “Okay, I'm bringing in something new, but it is representative of how we want to handle this step or this type of process in our application.” So it's not just bringing in a gem to handle one small area of the code, something that we could have written, but it is elevating our process and our system. CHRIS: Yup. Indeed. In this case, these are command objects within the system. That's actually the name that I got from the creator of the project. That was his suggestion on Twitter as to what to call these objects. And it's a pattern that I do want to encode and has become the standard within the application for any of these more complex processing tasks. So, again, we'll link to the previous episode. I talked about it in more depth and the ideas behind it. Railway Oriented Programming is a phrase that's used, which talks about how to sequence failures or successes and whatnot together. And there's some good material behind it, more general, but yeah, wonderful, little library. STEPH: What is Railway Oriented Programming? I'm not familiar with that term. CHRIS: That refers to the sequential processing that I was describing. So imagine that you have a bunch of different steps where first you fetch from the network to get this record, then using what you got back, you look up a user in your database, then you fetch that user's profile. Then you do something else. Each of those steps along the way could fail. And so the railway metaphor is the track is going forward, but if at any point you branch off the track because of a failure, then you're in the failure track, and that's a different thing. And so it's a very...the dry-monad or other similar Railway Oriented Programming or monads generally I think is the actual...it's the words in there. And I wish it wasn't in there because it's such a complicated word. But that idea is the fundamental, underlying thing that's going on there. And it is conceptually somewhat complicated, but if you don't try and think about the category theory behind it, and you're just like, well, I want to do a bunch of stuff, and it may fail at any point, and I want to return either a success message with everything having gone well or an error message at the point that it failed and stopped processing, then that's what this thing does, and it's fantastic at it. STEPH: Okay, cool. Thank you. CHRIS: You are welcome. And I think there's a bit more in the previous episode as well. So if that sounded interesting to anyone, I think I rambled more in a previous episode about it and probably better because I feel like I was more prepared that time than this time. STEPH: Well, along those lines of running a process and then being able to fail at any moment, I'm going to circle back to that other topic that I highlighted where most of my week has been focused on writing a task that is processing a CSV, something probably a number of us have done at some point in our career but processing a number of rows, and then sending and queuing jobs to then send data to a third party system. And it was really interesting less so because of the processing of the CSV and then enqueuing jobs. But it was more of the reporting that went behind it and the process that went into writing this task. So Joël and I were pairing on this task. Joël being another thoughtboter and also a former guest on this show. And we had an interesting process of where we started with one, let's do the simplest thing. Let's get it done. Let's also check through the CSV because you're often going to find stuff that doesn't align with what you expect it to when it's a CSV that's provided from an external source. One of the risks that we highlighted right away was how are we going to get the CSV on the server? Because we just have this one CSV that we need to run. We don't want to add it to the repo, and we can't generate it ourselves. So how are we actually going to get the CSV in a place that we can run this in a production mode? I learned that I could pass a CSV as standard input into the Rake task. So then I could actually run it locally because we're using AWS. So I could inform AWS to run this task, but then I could actually stream the CSV into the task that way. And that was really nice because then we no longer had the question of how are we going to get this file on the server? CHRIS: That's interesting. I didn't know...Yeah, the streaming of it from local to remote is an interesting one. On Heroku, I will typically open up a bash prompt, so Heroku run bash. And then, I will curl the file down onto the server and then run it locally. But that's an ephemeral dyno. It may die at any point. There are various things that could go wrong there. So that's always interesting. I imagine a similar thing could be done, but I don't know, actually, if you can directly stream into a Heroku dyno like that, which is an even more straightforward one because I end up having to bounce a file off of a random. Like, I'll often put it in a Gist or a Pastebin or something like that. And then I'll curl it down to the server, and yeah, this is interesting. STEPH: Yeah, I'm also not sure the specifics of how it would work with Heroku. But it was a really nice process for us to be able to use versus having to then read the file from, like you mentioned, curl it from somewhere else and then be able to parse it that way. Two other things that were top of mind for working on this task is one, item potency. You're going to rerun it, friends. At some point, your task is either going to bomb, and it's going to err. And then you're going to have to triage and run it again. Or whoever requested that you run this task and they said, “Oh, it's just temporary. We're just going to run the once,” that's not true. You're going to run it again. So keep in mind how to make that safe, that you can rerun it. And then that won't be its own scenario that then you have to triage and figure out. CHRIS: Item potency is one of those critical ideas, and I just wish the word were different. I feel ridiculous every time I say it. And I feel like I have to push my glasses up on my nose, and I'm like, well, have we considered item potency for this? But it's such a good idea. And it's the sort of thing that...you're totally right. Every time you're doing this sort of thing, it is something that you should consider. And we use GET requests, and they have rules about it. And it's such a good idea and such an important idea. And I just wish the word were different so that I felt more comfortable using it in polite conversation. STEPH: [laughs] I don't know why… and this may be sharing too much of myself. But the song Under Pressure by Queen and David Bowie the Under Pressure song has been in my head. But I've been replacing the under pressure part with item potent. So it's [singing] under pressure, and I've been [singing] item potent. [laughter] And that has just been my song for the week. CHRIS: You've normalized it enough for me now that I'll just hear you singing it every time, and I'll be like, this is a nonsense word. We're fine. We can just go – [laughs] STEPH: That's what I'm here for, to turn technical terms into nonsense. [laughs] CHRIS: It's really what this show is about at the end of the day. So you are our hero. STEPH: I just have to work on more lyrics for the song. I really just have that one line, that one hook. [laughs] CHRIS: Now I just want to scrap the rest of the episode and just come up with lyrics to item potent. [chuckles] But maybe we don't do that. STEPH: [laughs] CHRIS: Maybe that'll be after the credits B-roll, something like that. STEPH: The other way I do phrase that question is I'm like, what happens when it fails? And that always feels like a safe way. Because if I ask someone like, “Hey, is the item potent?” It feels more natural for people to be like, “Oh, it's fine. It doesn't need to be.” But if you say, “What happens when it fails?” It's harder for someone to say, “Oh, it's never going to fail. [laughs] There is nothing that could go wrong.” So it feels like a more intentional question in regards to how are we going to handle this when we need to rerun it? The other part that really came in handy was the fact that we spent more time on the reporting as well. So we really wanted to know what happened when we are processing all of these rows. So were there any invalid rows? And if we do encounter an invalid row, do we want to just stop processing and stop right there, or do we want to keep moving? Do we have any rows that didn't match, a row in our database, and how do we capture those? And because it's item potent, maybe we want to capture skipped rows so then that way when we rerun it, we can see okay, well, we skipped, you know, a thousand rows because we'd already run them before. And all of that reporting has been so handy because we're also using this to triage. Like, hey, we're sending a bunch of messages to this third-party system. We reach out to that third-party group, and we say, “Hey, we sent you all of this. This is how it went. Let us know how it went on your end.” And then, we can have a more collaborative discussion around what happened on their end versus what happened on our end, and then we can make tweaks to each system. So overall, it felt more of that run-of-the-mill task where you're going to write a Rake task, you're going to parse a CSV. But something about the reporting really resonated with me because in the past, when I've written Rake tasks, I've leaned more on the this is temporary, so it's okay if it's not great. But the reporting has been so crucial that from now on, I always want reporting from any Rake tasks that I run, and I want to know what happened. And then I also want to be able to rerun it. And I'm very wary of any time that someone says, “Oh, this is temporary,” because then I also think that leads to interesting discussions around testing. Because initially, when we started this, we were under some pressure. Hey, that goes back to my song. We were under some pressure for writing this particular task. And then the question came up: do we want to test it? And to be frank, testing a Rake task isn't great; it's not fun, which is one of the reasons we get out of a Rake task as quickly as possible and put it into a class. So that was also one of the drivers or one of the conversations that went against, like, oh, this is temporary. So it's okay if it's not the best code. It's okay if it's not tested. And then I was more of an advocate for, like, well, I don't feel good about this. And I'm rerunning the Rake task every time I want to confirm that the changes that I've made are correct. And so once I hit that manual labor point where I'm like, okay, I'm testing this. I just don't have automated tests for this, that then I actually started adding test coverage around it. CHRIS: I'm so excited that we have transcripts, particularly for that last minute that you were just talking about, because I feel like that was a mini master class in software development. And more generally, there's been almost like a poetic something to the two different topics that you've brought up today are the sort of mundane, very real things that actual software development is made almost entirely of. It's not often that we're just starting with a greenfield app and building a new thing. I happen to be doing that this week, but it's rare. It's going to be over very soon. And then I'm going to be in the world of oh; we have to backfill a bunch of data. How are we going to do that? Or we have this portion of the code that, frankly, we should have been testing more, but we didn't. How do we deal with that? And these murky, gray areas where there isn't a clear answer and you have to go with intuition, and you have to...a bunch of the things that you just listed as these good heuristics that you have around how you think about software. I'm just really excited for the transcript to that because that was awesome. STEPH: I'm so glad you enjoyed it because I think it's not until right now where I'm processing this and talking about it with you that it is...I was trying to think earlier, like, why is this so interesting? Why am I so excited to bring this here to this conversation? And I think it is for the reasons exactly that you said, that it does feel like one of these...this is a mundane task. We write a task; we process some things; we send some data. We do that all the time. But then it's all the other bits around it, and the other ways that we've been bitten, and how we avoid those scenarios, and then how we identify a risk like when someone says, “Oh, it's temporary. It's fine.” That part, I think, is always the very interesting aspect of writing software. CHRIS: Do you consider this sort of stuff the distraction from the work or actually the work? And in my experience, this makes up a lot of the work. And treating it like what you were saying about testing like, “Yeah, that thing where you're telling me that it's going to be temporary and we probably don't need to test it, I've been told that before,” and I just want to spot-check that real quick. Or what you said of the when I was manually testing, and I crossed a threshold where I'd done that enough, that now adding a test harness around that totally makes sense. It's worth the investment at that point. Those little heuristics that we build up over time are the things that are hard to get. And so, yeah, I love that conversation. STEPH: I really like how you also asked and then responded to that question around is this distraction, or is this the work? And I am wholeheartedly with you that this is the work. This is the part of the work that I do find interesting, and knowing when to make those trade-offs, and when you've hit a decision point, and which direction you're going to go, and being able to recognize something that otherwise could have been a fire. It could have been much worse in terms of if we'd built a task that wasn't robust. Because of course, then the second time that I ran it, you know, emphasis on the second time that I ran it because we needed to do it again to process more data. It erred halfway through, and I panicked in the moment. But then I was like, oh yeah, this is fine. We planned for this. This was in the game plan. So it goes back to that we want the calm execution. We want to plan so we are back in that calm state. We want calm software. And this feels very in line with how do we make this more calm? CHRIS: I love that theme that you're bringing up there, which I think is a theme that we've touched on a bunch of times. I think we actually have an episode called Seeking Calm. And I think that little title there, as much as I love the nonsense titles that we have for most of the episodes, that one I think really captures the theme that a lot of what we talk about is in orbit around yeah, we want it to be calm. We don't want things to be on fire every day. And what does it look like to build software with that in mind? STEPH: Yeah. I also love that theme. And I like that it's something that we have surfaced and then really stuck to because it resonates deeply with me. But that's pretty much all I have for my Rake task adventure. What else is new in your world? CHRIS: Well, I have one more hopefully quick thing. I'm going to try and boil this down to its essence, but I ran into, let's call it, a subtlety. It's not an issue. It wasn't a bug per se. But looping back to the previous episode that you and I recorded together, we talked a bunch about multi-step forms, which was a great conversation in and of itself. But I eventually completed the feature that I was working on, put it up for acceptance. And the product manager who was reviewing it highlighted a couple of different things. They recorded a video which, as an aside, I love that as a way to do acceptance and show what's going on and talk through it. There were a couple of smaller issues, which I was able to resolve very quickly, but there was one more interesting one that I've extracted this as future work because it was too complex to try and solve in the moment. But basically, what's happening is imagine that we have a two-step form. So there's the first page of the form. The first form that you see is for your name. So it's just an input that says, “Name,” and you fill in your name and then you hit continue. That posts to the server. We save off that data. And then, we redirect you to the next page on the form, which is, say, phone number. So two steps. We start with name; we go to phone number. What happens if you type in your name, you hit continue, everything processes correctly. You end up on the phone number page, but you hit back. What do you think happens? STEPH: I would expect to go back to the name field and probably expect my name to be populated but would also be fine if it's not. CHRIS: I like that you would be fine with the fact that it's not, if it's not, because it's not is the answer. And what's unfortunate is so if someone goes back, they will see the unpopulated form, so not filled out. But if they reload at that point, we will serialize down the value and pre-fill the input with their saved data. And so that inconsistency is not great. It's all the more unfortunate because as I tried to resolve it, I'm like, oh, okay, this feels like a solvable thing. I just need to tell Chrome, “Hey, if someone hits the back button, do a better thing than what you're doing.” I needed a way to instruct Chrome or whichever browser because this should be a standards-level thing. And there are things in the HTTP spec about this. So there's the Cache-Control Header is one of the headers that you can send down with a response. And there's a bunch of different values that can be in there, no-cache, no-store. There's also the…I want to say it's the max-age, or I think it's Expires. That's a different header. But you can set it to have an expiry that's just already expired. There's also a Pragma, which you can say no-cache. Some of these are standard. Some of these are not standard. Chrome ignores all of them. Chrome's just like, “Nevermind.” So the idea is that those headers are intended to inform intermediate proxies. Say you have a caching layer, so you're using Fastly or CloudFront or something like that. When that service fetches the page from your backend, from your actual, say, Rails app, then it will look at that header and say, “Should I hold onto this for a little while or not? Is it public, or is it private? What should I do as an intermediate caching proxy?” Ideally, Chrome would also look at those and say, like…there should be a version of me being able to tell Chrome, “Listen, if someone hits the back button, please go to the server and ask for it.” Like, I'll take the second of latency that that introduces in navigating back because I always want to show them the correct data. Unfortunately, I have not found a way to do that. There's a bunch of things on Stack Overflow and other places of JavaScript solutions where I can listen to the window.popstate event and then force location.reload. But that feels like a pile of hacks that I don't want to get into. It feels like it will be very inconsistent between browsers. So I am still searching for a solution. But I would like to figure something out here. As a more pointed version of this to try and explain an example where this could happen, imagine that you've got the header of your application, and in it, you have a sign-out button. And so that sign out is going to delete to the session's endpoint. So you're deleting your session. And after that, you get redirected to the login form. If you then hit back, you will be taken back to the browser's cached version of the previous logged-in state page that you were at. This is probably fine in a lot of cases. If you reload, you can't do any nefarious action at that point because you are logged out. But you are seeing potentially sensitive information. So imagine that you log in in a cafe, you go through Gmail, or whatever, or your bank, then you log out, you walk away. If you leave that page up and someone hits back, they can now see what was on the page. And part of that particular version, I read a bunch of backstory about that on the Inertia repo because someone posted this as an issue against Inertia as a framework. And the Inertia team...and I really love how they handle these sorts of things. So they were very kind, very welcoming to the issue but also said, “Actually, we're doing...like, this isn't us. But let's talk about it,” and gave a ton of detail and went through the HTTP spec. And it's a fantastic issue as a read. It's like a fun bedtime reading sort of thing to learn about how the internet works. But the Inertia crew really, really cares about being spec-compliant and doing the right thing. So, unfortunately, this is outside of their purview as well. But yeah, I don't have a solution, and it makes me sad. STEPH: I liked that second example that you provided because I feel like I see that one more commonly when I'm on an application, and I don't know why. But I hit back, and then it shows that I'm signed in, and I'm like, that's a lie, I'm not signed in. I also really appreciate how Inertia is responding so kindly and welcoming to folks and then providing such thoughtful responses. That sounds immensely helpful. I don't know, yeah, I am also interested in this. It's something that I haven't worked with in a while, so I don't have any grand ideas at the moment. So I'm also curious if other people have run into this and how they've approached it. CHRIS: Yeah. If we're being honest, partly I wanted to share this with you, but also I wanted to say this into a microphone, and then hopefully someone out there on the internet knows an answer. I've tried, I think, all of the normal things, all of the different variations of headers. I haven't actually poked at the JavaScript things yet, but that's probably the direction I'm going. But if anyone out there has an idea, I would absolutely love it. I think in my mind, the ideal version of this is if I'm making GET requests and I'm clicking around on a page, it's perfectly fine for Chrome to use its cache version of the previous page because, sure, that's fine. It may actually be stale just based on it's been a few seconds, and something's changed on the server, but I'm willing to accept that. But if I've posted, or patched, or deleted, or done any action that by definition should be changing data on the server, then I would love for a way to invalidate Chrome's back cache, so its version of the pages that it's restoring when I'm hitting back. I'd love that as the heuristic to get to. I don't know if I can get there. My sense says chrome's like, “No, I want to go fast. That's all I care about.” [chuckles] I'm like, all right. Well, I get that vibe but -- STEPH: Yeah, that's a nice, succinct way to say that if I've changed data, then I want to invalidate that browser cache, so then we don't show them a fresh page and we actually show them the name that they entered on the form. CHRIS: As we know, though, cache invalidation is one of the very easy things to do in software development. So I'm sure my naive, quick idea is very easy to implement and will have no edge cases of its own. STEPH: Well, this will be our parallel Pixar movie. We have one that we highlighted earlier, and this will be the other one, The Cache Buster. I'm not great with titles. [laughs] This will be our other Pixar movie. CHRIS: Buster the Lonely Cache. Yep. STEPH: All right. Well, in parallel, we'll work on Buster the Lonely Cache. Is that the name of this? CHRIS: Yep. STEPH: Cool. We'll work on that script. And in the meantime, I'll also think about it if I encounter this or come up with some ideas and share them with you. And then also if other people have any ideas, that'd be fantastic. CHRIS: That would be fantastic. STEPH: Yes. Please write in to help Buster with the lonely cache, which, wait; I don't get it. Why is it the lonely cache? CHRIS: Because the cache has been busted and evicted. So he's got no friends. There's nothing...There's no data left. I don't know. STEPH: [laughs] CHRIS: I came up with it real quick. I don't stand by it. It's not a great idea, but we'll workshop it. It'll be fine. STEPH: That's true. Yeah, we'll go through it. I'm asking too many questions for a very quick creative. We're in the creative space, not the critical space. But please write in to help Buster figure out [laughs] the lonely cache or how to bust the cache. Oh, goodness. I'm done with my jokes for today. I'll try to stop. CHRIS: I believe that's a perfect note. Shall we wrap up? STEPH: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. CHRIS: This show is produced and edited by Mandy Moore. STEPH: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or a review in iTunes as it helps other people find the show. CHRIS: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed on Twitter. And I'm @christoomey. STEPH: And I'm @SViccari. CHRIS: Or you can email us at hosts@bikeshed.fm. STEPH: Thanks so much for listening to The Bike Shed, and we'll see you next week. All: Bye. Announcer: This podcast was brought to you by thoughtbot. thoughtbot is your expert design and development partner. Let's make your product and team a success.