on 2020 Epson Pano Awards By www.photocompete.com Published On :: Thu, 30 Apr 2020 08:23:30 +0000 Prizes: Amateur Awards 1st Place – $1500 cash Runner up – $500 cash Categories: VR/360 Awards Nature / Landscapes Built Environment / Architecture Image requirements: All [...] The post 2020 Epson Pano Awards appeared first on Photocompete. Full Article Contests Current Exhibition International Landscape Nature
on “Landscapes & Waterscapes” Photography Competition By www.photocompete.com Published On :: Fri, 01 May 2020 07:45:24 +0000 Artwork may be mountains, hills, water bodies such as rivers, lakes, ponds and the sea, living elements of land cover including indigenous vegetation, human elements [...] The post “Landscapes & Waterscapes” Photography Competition appeared first on Photocompete. Full Article Art Contests Current Exhibition International Landscape
on C/HA Artist Award Competition By www.photocompete.com Published On :: Sun, 03 May 2020 07:39:02 +0000 Theme: Debauchery Submit your best work expressing your view/perspective of what debauchery means to you. Solo exhibition and an accompanying Book during our Winter season. Image requirements: 10 [...] The post C/HA Artist Award Competition appeared first on Photocompete. Full Article Art Contests Current Exhibition International
on The Biodiversity Photography Contest By www.photocompete.com Published On :: Wed, 06 May 2020 09:53:21 +0000 The Biodiversity Photography Contest has as main objective to promote the theme of biological natural heritage, namely the natural regions, the ecosystems, the habitats and [...] The post The Biodiversity Photography Contest appeared first on Photocompete. Full Article Animals Contests Current Exhibition International Nature
on ViewPoint Photo Competition 2020 By www.photocompete.com Published On :: Sat, 09 May 2020 06:57:26 +0000 Awards: Twelve winning images will be selected for exhibition at ViewPoint Gallery – one image will be exhibited monthly. The winning images will be professionally [...] The post ViewPoint Photo Competition 2020 appeared first on Photocompete. Full Article Art Contests Current Exhibition International
on School District Switches to Local and Organic Meals, Cuts Carbon Footprint—and Saves Money By feedproxy.google.com Published On :: Tue, 23 May 2017 20:01:39 +0000 By Melissa Hellmann Yes! Magazine A new report revealed surprising results when Oakland overhauled its lunch menu at 100-plus schools by serving less meat and more fruits and vegetables. When her eldest son was in elementary school in the Oakland … Continue reading → Full Article Food eat local nutrition school lunch
on Nature Offers Solutions to Water Woes and Flood Risks By feedproxy.google.com Published On :: Wed, 13 Sep 2017 23:12:36 +0000 By David Suzuki David Suzuki Foundation When the Aztecs founded Tenochtitlán in 1325, they built it on a large island on Lake Texcoco. Its eventual 200,000-plus inhabitants relied on canals, levees, dikes, floating gardens, aqueducts and bridges for defence, transportation, … Continue reading → Full Article Human Impact Flood Waters Flooding relationship with nature urban planning water
on Children’s Exposure to Secondhand Smoke May Be Vastly Underestimated by Parents By feedproxy.google.com Published On :: Fri, 17 Nov 2017 23:56:06 +0000 Tel Aviv University Press Release Smoking parents misperceive where and when their kids are exposed to cigarette smoke, Tel Aviv University researchers say Four out of 10 children in the US are exposed to secondhand smoke, according to the American … Continue reading → Full Article Health & Wellness children's health secondhand smoke
on You Know Clean Air is Good for Your Health. It’s Good for the Economy, Too. By feedproxy.google.com Published On :: Tue, 24 Apr 2018 18:44:00 +0000 By Rachel Cernansky Ensia When the Clean Air Act of 1970 became law, members of the business community in the United States responded with opposition. Such regulations are a drag on growth, some economists say, for individual businesses and for … Continue reading → Full Article Business & Economy Business clean air act Human Health sustainable business
on Mobility Pricing Relieves Congestion, Helps People Breathe Easier By feedproxy.google.com Published On :: Fri, 01 Jun 2018 19:54:22 +0000 By David Suzuki with contributions from Senior Editor Ian Hanington David Suzuki Foundation By 2002, drivers in London, England, were spending as much as half their commuting time stalled in traffic, contributing to much of the city centre’s dangerous particulate … Continue reading → Full Article Transportation air pollution auto emissions Commuting Eco-Conscious Drivers Transport for London
on Warming Weather Could Reduce the Nutritional Value of Rice By feedproxy.google.com Published On :: Tue, 19 Jun 2018 00:47:21 +0000 UN Environment Press Release Hundreds of millions of people in Asia rely on rice not only as a staple but as their main source of nutrition. But new research suggests the rice they eat will become less nutritious due to … Continue reading → Full Article ET News Food Asia Climate Change nutrition rice
on McDonald's Workers in Denmark Pity Us By feeds.drudge.com Published On :: Fri, 08 May 2020 17:29:20 -0400 Nicholas Kristof: Before the coronavirus pandemic, I crept behind [expletive] Danish lines to explore: How scary is Denmark? How horrifying would it be if the United States took a step or two in the direction of Denmark? Would America lose its edge, productivity and innovation, or would it gain well-being, fairness and happiness? Full Article news
on Coronavirus is Shutting Down the Meat Supply Chain By feeds.drudge.com Published On :: Fri, 08 May 2020 19:09:05 -0400 The United States faces a major meat shortage due to virus infections at processing plants. It means millions of pigs could be put down without ever making it to table. This is what the predicament looks like on a Minnesota farm. ... According to the Minnesota Pork Producers Association, an estimated 10,000 pigs are being euthanised every day in the state. ... [Farmer Mike Boerboom:] "On the same day that we're euthanising pigs - and it's a horrible day - is the same day that a grocery store 10 miles away may not get a shipment of pork. It's just that the supply chain is broken at this point." Full Article news
on Judge Could Hold Up Trump Administration's Bid to Clear Flynn, Legal Experts say By feeds.drudge.com Published On :: Fri, 08 May 2020 20:51:52 -0400 The notoriously independent-minded federal judge who once said he was disgusted by the conduct of Michael Flynn could block the administration's bid to drop criminal charges against the former adviser to President Donald Trump, legal experts said. Full Article news
on The DOJ's Lawless Reversal on Michael Flynn By feeds.drudge.com Published On :: Fri, 08 May 2020 21:30:10 -0400 Randall D. Eliason: The government's motion to dismiss the case against former national security adviser Michael Flynn is like nothing I've ever seen. It's a political screed dressed up as legal analysis, promoting the "deep state" conspiracy fantasies of President Trump. It epitomizes the politicization of the Justice Department under Attorney General William P. Barr. It is, in the truest sense of the word, lawless. Full Article news
on More Than 1,000 Workers at Tyson Plant Have Coronavirus By feeds.drudge.com Published On :: Fri, 08 May 2020 23:58:14 -0400 More than 1,000 workers at the Tyson Foods plant in Waterloo have tested positive for the coronavirus, a county public health leader said Thursday -- more than double the number Gov. Kim Reynolds had said were infected the day before. Full Article news
on Trump Declares, 'I Learned a Lot from Nixon' By feeds.drudge.com Published On :: Sat, 09 May 2020 08:33:24 -0400 During an interview on "Fox and Friends," Trump explained why he chose not to go on a firing spree amid Special Counsel Robert Mueller's Russia investigation a la Nixon's Saturday Night Massacre during the Watergate scandal. "I learned a lot from Richard Nixon: Don't fire people," the President said. "I learned a lot. I study history, and the firing of everybody ... .I should've, in one way," he continued. "But I'm glad I didn't because look at the way it turned out." Full Article news
on Roy Horn of 'Siegfried and Roy' Dies of COVID-19 Complications By feeds.drudge.com Published On :: Sat, 09 May 2020 10:32:26 -0400 Roy Horn, famed tiger handler and co-star of the magic duo known as Siegfried and Roy, died of complications from the coronavirus in a hospital in Las Vegas on Friday. He was 75 years old. "Today, the world has lost one of the greats of magic, but I have lost my best friend," Siegfried Fischbacher said in a statement. "From the moment we met, I knew Roy and I, together, would change the world." "There could be no Siegfried without Roy, and no Roy without Siegfried." This is a developing story. Please check back for updates. Full Article news
on Top Colorado Republican Pressures Official to Report False Election Results By feeds.drudge.com Published On :: Sat, 09 May 2020 11:33:22 -0400 U.S. Rep. Ken Buck, who is also the chairman of the Colorado Republican Party, was captured ordering a local party official to report false election results in a primary race for a state Senate seat in a leaked audio recording released earlier this week. Full Article news
on GOP Plans to Spend at least $20 million to Combat Voting Rights Lawsuits By feeds.drudge.com Published On :: Sat, 09 May 2020 12:32:21 -0400 The Republican National Committee and President Donald Trump's reelection campaign have doubled their litigation budget to $20 million, Politico reported Thursday. RNC chief of staff Richard Walters told Politico that the GOP is prepared to sue Democrats "into oblivion" by spending "whatever is necessary" to prevail in legal fights against its rivals leading up to the November election. Full Article news
on the quest for personal style (with pal Alex Strohl) By feedproxy.google.com Published On :: Tue, 09 Jul 2019 13:15:37 +0000 One of the most common questions I get is about how to stand out + how to develop personal style. So when fellow photographer Alex Strohl stopped by the studio, I wanted to get his take on this ever-popular question. If you’re not familiar with Alex’s work, a quick spin on instagram will fill in the blanks. He’s a photographer that tells stories through pictures and film. And when you see his work, there is a distinct thumbprint on it. Developing a personal style is critical. It’s the reason why someone would seek you out vs someone else. It’s the thing that differentiates your work from everyone else. There’s a thousand ways to develop your personal style. In our conversation, Alex shares some of his insights he’s gained along the way. Though each of us may take a different path to get there, there is one constant, and that’s doing a lot of work. So take a listen and then get back to work. ???? Enjoy and subscribe to the podcast below if you dig. Please give Alex a shout on social @alexstrohl ???? FOLLOW ALEX: twitter | instagram | website Listen to the Podcast Subscribe Watch the Episode […] The post the quest for personal style (with pal Alex Strohl) appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE cjRAW Podcast alex strohl personal style photography
on Everything I Know In One Place By feedproxy.google.com Published On :: Wed, 17 Jul 2019 13:15:58 +0000 It was surreal to sit down at the mic and record this show after spending the last few years (5 a.m. mornings, late, late nights, and many long weekends hunkered down) writing a book that I’m proud and beyond excited to share with YOU and the world. It’s called CREATIVE CALLING and it’s officially available for pre-order TODAY! In this episode, you get the little sneak peek at the book (yes, I read a little from it) and a little background on why I needed to write it. After all, life isn’t about “finding” fulfillment and success – it’s about creating it. Creativity is a force inside every person that, when unleashed, transforms our lives and delivers vitality to everything we do. Establishing a creative practice is therefore our most valuable and urgent task – as important to our well-being as exercise or nutrition. The good news? Creativity isn’t a skill—it’s a habit available to everyone: beginners and lifelong creators, entrepreneurs to executives, astronauts to zookeepers, and everyone in between. It’s only through small, daily actions that we can supercharge our innate creativity and (re-)discover our personal power in life. Everything you need is inside you right now. Whether your ambition is a creative career, completing a creative […] The post Everything I Know In One Place appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Inspiration Podcast
on Ramit Sethi: Money + Other Ways to Live Rich By feedproxy.google.com Published On :: Wed, 31 Jul 2019 13:15:09 +0000 Ditch the idea of yourself as a starving artist. Throw away the notion that you’re doomed to be another poor creative soul. My long time pal Ramit Sethi is back on the show to remind us we need to get back on track to building and living a rich life. And believe me, that doesn’t have to mean cutting back the lattes. Ramit has been on the show a few times, but if you haven’t caught up yet, let me fill you in. Ramit Sethi is the author of the NYT bestseller “I Will Teach You To Be Rich” and writes for over 500,000 monthly readers on his website, iwillteachyoutoberich.com. It’s one of my favorite go-to finance resources covering psychology, personal finance, careers, and entrepreneurship. No one has single-handedly given me better insight into the business side of art, than Ramit. Ramit has updated & expanded 2nd edition of his book and joined me for a LIVE studio conversation on money confessions. In this episode we get into: A rich life isn’t only about save money, it’s about defining & prioritizing the things you love the most. It’s one thing to manage our own personal finances but navigating that with […] The post Ramit Sethi: Money + Other Ways to Live Rich appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast author finance money negotiating personal finance ramit sethi
on Intuition, Creative Freedom & Doing What You Love with Chris Ballew By feedproxy.google.com Published On :: Wed, 14 Aug 2019 13:15:04 +0000 Today’s episode is going to rock your world … pun fully intended because today’s guest is an actual rock star. You may remember a band called Presidents of the United States of America. They took the world by storm in 1995 with their self titled album, Presidents of the United States of America playing songs like Lump and Peaches. Yes, that’s right. My guest today is frontman Chris Ballew. Chris and I have been friends for years, including collaborating on a music video together and at least one live performance (gotta listen to find out ;). Of course we get into his musical journey, a meteoric rise to success, and then realizing something was missing. We take some deep dives into Chris’ creative process, including his method for capturing his small bits and later using those to write new works, including his new project Casper Babypants. In this episode: Consider what kind of artist you are and how you relate to other artists. For years Chris played in bands, but what he learned about himself is his work is actually solo. Don’t censor yourself while you’re creating. Get it out, no matter how crazy or ridiculous or unusual and then […] The post Intuition, Creative Freedom & Doing What You Love with Chris Ballew appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast art Caspar Babypants chris ballew creative process Inspiration music
on Adaptation, Self-Awareness and Art of the Side Hustle with Chris Guillebeau By feedproxy.google.com Published On :: Wed, 04 Sep 2019 13:08:03 +0000 Chris Guillebeau has traveled to 193 countries. And just to be clear, that is all of the countries recognized on the planet. He is the first person to do it before the age of 35. More importantly, he has built online businesses, side hustles, and mastered the art of a non-conforming lifestyle since he was 19 years old. There’s almost nobody better person equipped to talk about starting lots of businesses. He has a daily podcast called Side Hustle School where he’s featured more than 850 different side hustle businesses + featured many in his new book called 100 Side Hustles. Chris also started half a dozen or more himself, started one of my favorite conferences, The World Domination Summit, and is a New York Times bestselling author of books like the $100 Start Up and The Art of Non-Conformity and many others. This guy is a beast and he’s so savvy, so humble. In this episode: We go into details about some of Chris’ favorite side hustle businesses he’s come across in his podcast & writing this book – what are some of the most common traits and failures. Chris shares his experience with depression, how he’s faced it, […] The post Adaptation, Self-Awareness and Art of the Side Hustle with Chris Guillebeau appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast anxiety Chris Guillebeau depression gig economy side gig side hustle
on The Soulful Art of Persuasion with Jason Harris By feedproxy.google.com Published On :: Wed, 11 Sep 2019 13:00:42 +0000 As creators and entrepreneurs, getting our ideas out in the world is critical. And today, I have my long time friend Jason Harris in the hot seat to help us with just that. Jason is the founder and CEO of the award winning creative agency Mekanism. He is one of Creativity Mag’s most creative people in business, Top 100 People Who Make Advertising Great and about 52 other awards in the creative space. You’ve certainly seen his work if you’ve watched Superbowl commercials or heard of Peloton, Ben & Jerrys, HBO, and more. He also is one of the people that I look up to as a model of giving back. He donates a huge amount of his time to causes in which he believes and uses his marketing savvy for doing good in the world. I’m super inspired by our conversation today for so many reasons, but here’s handful to whet your palette: Of course we get into his new book The Soulful Art of Persuasion, in which Jason breaks down the art of sharing our ideas in an honest and authentic ways We talk about the ups and downs living life identifying as a professional creator, including the […] The post The Soulful Art of Persuasion with Jason Harris appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast ad agency Jason Harris Mekanism
on Imagine What’s Possible – On Stage /w Humans of New York Creator Brandon Stanton By feedproxy.google.com Published On :: Fri, 27 Sep 2019 13:15:23 +0000 My book Creative Calling is out! Thanks for all your love, support, and help getting it out into the world. We kicked off celebrations in Seattle with over 700 people in attendance to talk about Creativity with my good buddy, Humans of New York creator, Brandon Stanton. I recorded the session for you. Hope you enjoy! FOLLOW HUMANS OF NEW YORK: instagram | twitter | website Listen to the Podcast Subscribe This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, Grammy Award winners, New York Times best selling authors and the best entrepreneurs of our times. The post Imagine What’s Possible – On Stage /w Humans of New York Creator Brandon Stanton appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast Brandon Stanton Creative Calling Humans of New York speaking tour
on How to Build Your Brand /w Ben Von Wong By feedproxy.google.com Published On :: Wed, 09 Oct 2019 13:15:07 +0000 Back in 2012, budding photographer Ben Von Wong stopped by my photo studio in Seattle to say hello. Fast forward to present day and he’s making headlines working with some of the world’s largest brands like Nike and IBM, create work that combines art & activism. His work has been featured numerous times on Buzzfeed, Gizmodo, Mashable and the Huffington Post to name a few. So when he stopped by the CreativeLive studios not too long ago, I wanted to pick his brain one of the most common questions I get on how to stand out and build a personal brand. In this episode: Put work in your portfolio you want to be hired to do. If you shoot weddings and also muscle cars, consider separate sites. One of Ben’s main considerations for helping his project spread? Create with the headline in mind. Ben shares a little about his process to discover his unique style and thumbprint to his work. Enjoy! FOLLOW BEN: instagram | twitter | website Listen to the Podcast Subscribe Watch the Episode This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, […] The post How to Build Your Brand /w Ben Von Wong appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE cjRAW People Podcast Ben Von Wong brand personal style photography
on Harmony > Balance with Jason Calacanis By feedproxy.google.com Published On :: Wed, 06 Nov 2019 14:27:08 +0000 Today we’re going back to San Francisco with myself and Jason Calacanis on stage during my tour stop for my book Creative Calling. Jason is an investor and long time host of the This Week in Startups podcast. And, of course, Jason wastes no time in our conversation. He goes right to the heart of the matter by getting into failure, venture capitol, knowing when to quit, and when to push through. Enjoy! FOLLOW JASON: facebook | twitter | website Listen to the Podcast Subscribe This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, Grammy Award winners, New York Times best selling authors and the best entrepreneurs of our times. The post Harmony > Balance with Jason Calacanis appeared first on Chase Jarvis Photography. Full Article Business chasejarvisLIVE Podcast Book Tour Creative Calling creativity interview Jason Calacanis
on Self Reliance + Personal Uprising with John Jantsch By feedproxy.google.com Published On :: Wed, 13 Nov 2019 14:01:38 +0000 John Jantsch is a veteran marketer. He’s written several bestselling books including Duct Tape Marketing and The Referral Engine. He’s out with a new book called the Self-Reliant Entrepreneur: 366 Daily Meditations to Feed Your Soul and Grow Your Business As you might know, I’m a bit of a fan of daily habits, so of course John gives us a little preview into some of the daily explorations of thoughts and writings from notable American authors. Of course, that’s not all… we also get into: We go deep into following your own path and listening to your intuition. What we can learn from rabble rousers of our history and those who embraced counter culture to follow their own beliefs. The role that self-awareness has in pursuing our dreams. and much more. Enjoy! FOLLOW JOHN: facebook | twitter | website Listen to the Podcast Subscribe This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, Grammy Award winners, New […] The post Self Reliance + Personal Uprising with John Jantsch appeared first on Chase Jarvis Photography. Full Article Business chasejarvisLIVE Podcast Counter Culture Inspiration marketing meditation
on Redefine Creativity – A conversation with Kevin Rose By feedproxy.google.com Published On :: Wed, 11 Dec 2019 14:15:36 +0000 Today I’m sitting down with investor, serial entrepreneur and all around good human, Kevin Rose. If you’re a long timer listener, you might remember Kevin was part of 30 Days of Genius. Now the tables are turned and I’m in the hot seat as a guest on his podcast, the Kevin Rose Show. Of course, it’s always fun sitting down with one of my long time homies to unpack some of my favorite topics, including: How to build your creative muscle and why it’s becoming more important Standing out and why you’re uniquely qualified. Forgetting the “shoulds” is a must do to uncork our richest lives and much more… Big shoutout to Kevin for having me on the show … and if you haven’t already, be sure to check out his podcast The Kevin Rose Show anywhere you listen to podcasts. Enjoy! FOLLOW KEVIN: instagram | twitter | website Listen to the Podcast Subscribe This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top […] The post Redefine Creativity – A conversation with Kevin Rose appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast Creative Calling creativity entrepreneurship fear Kevin Rose risk
on There Is Only One You with Clemency Burton-Hill By feedproxy.google.com Published On :: Wed, 01 Jan 2020 15:17:19 +0000 There are 7106 languages on earth and yet there are a few universal languages that transcends the language barrier. In this episode we explore one of the first universal languages of human history: music. My guest today is Clemency Burton-Hill. From underground DJ to the Creative Director at New York Public Radio, she is an author, a musician, and host of multiple podcasts including The Open Ears Project, Classical Fix, and Moments that Made Me. Her latest book, Year of Wonder helps readers explore and experience a new classical musical piece every day. In this episode: Classical music has a bad rap for being stuffy, boring, and largely inaccessible. Clemency expands on what’s available, and how it’s really the soundtrack of our lives. The universality of music and how we use music to explore, express, and share. Of course, Clemency drops so many names of musical artists to explore who are crushing it today. Enjoy! FOLLOW CLEMENCY: instagram | twitter | website Listen to the Podcast Subscribe This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in […] The post There Is Only One You with Clemency Burton-Hill appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast creative director creativity language music passion
on Choose Creativity – A Conversation with Jordon Harbinger By feedproxy.google.com Published On :: Wed, 29 Jan 2020 14:14:39 +0000 Recently sat down with my man Jordan Harbinger on his podcast The Jordan Harbinger Show. As a radio personality and a podcaster long before it was cool, Jordan is no stranger to the mic. It was a fun conversation and I hope you enjoy! A few of my fav topics: I share my framework for learning from the masters by deconstructing what they do and applying it My creative slumps and how I dug out How mindset matters and unwinding our self-limiting beliefs and much more … Big shoutout to Jordan for having me on the show … and if you haven’t already, be sure to check out his podcast The Jordan Harbinger Show anywhere you listen to podcasts. Enjoy! FOLLOW JORDAN: instagram| facebook | twitter | website Listen to the Podcast Subscribe This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, Grammy Award winners, New York Times best selling authors and the best entrepreneurs of our […] The post Choose Creativity – A Conversation with Jordon Harbinger appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast creativity entrepreneur failure fear habit mindset practice
on Pay Attention to What Ignites You with Jody MacDonald By feedproxy.google.com Published On :: Wed, 05 Feb 2020 14:06:22 +0000 Imagine this: Your job is good, and safe, but it’s not fueling you anymore. You decide to quit your “real” job and sell all your belongings to live a life of adventure. And just as you are waving your last goodbye, the unthinkable happens and it changes everything. Like most of us, award winning photographer Jody MacDonald didn’t know what her path would be. Yet when her wake up call came, she listened. From train hopping in the Sahara to paragliding in the Himalaya, she’s no stranger to adventure and exploration. Her work blends insightful storytelling, big adventure expeditions and social change in the hopes of promoting the preservation of wild places. Men’s Journal named her “One of the 25 Most Adventures Women in the Past 25 Years and National Geographic said she’s one of the top female adventure photographers pushing the limits. I’ve admired Jody’s work from afar for years. Her life story and career arc is remarkable. It set her on a path to tackle some of the life’s biggest questions and what she has learned is pure gold. In this episode: Why waste your time on things that make you unhappy? What Jody does to tune into […] The post Pay Attention to What Ignites You with Jody MacDonald appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast adventure death national geographic paragliding Photographer surf travel
on Workplace Revolution with Amy Nelson By feedproxy.google.com Published On :: Wed, 19 Feb 2020 16:25:13 +0000 Amy Nelson is the founder and CEO of The Riveter. If you’re not familiar with The Riveter, it’s a modern day union of women and their allies. It’s a community, a workspace and resource that supports women in building business and careers. The Riveter has locations all throughout the US and is growing rapidly. I cannot wait for you to hear this story. Amy Nelson practiced corporate litigation for over a decade in New York City and Seattle and worked in politics under several presidents. But it wasn’t until she was a mother that she started noticing something. Conversations no longer were about her career, but how motherhood would impact her career. Why was it not possible to “have it all”: be the best lawyer, the best wife, and mother? Looking for inspiration, she discovered a telling statistic: 43% of highly trained professional women “off-ramp” after having kids. It was then an idea started to form. In this episode we explore: How a bold concept can go from idea to reality. How Amy raised money and grew a national company in 2.5 years Being a vulnerable leader + the emotional journey of exploring and building something new How can we all […] The post Workplace Revolution with Amy Nelson appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast entrepreneurship fear gender gap mother startup the riveter Transition women
on Finding Mastery: A Conversation with Michael Gervais By feedproxy.google.com Published On :: Wed, 04 Mar 2020 14:05:59 +0000 This week I’m in the hot seat with one of the leading experts in mindset training. Dr. Michael Gervais is a high performance psychologist working in the trenches of high-stakes environments with some of the best in the world. His clients include world record holders, Olympians, internationally acclaimed artists, MVPs from every major sport and Fortune 100 CEOs. Dr. Gervais is also the co-founder of Compete to Create, an educational platform for mindset training. Today I’m on his podcast Finding Mastery which unpacks & decodes each guest’s journey to mastery through mindset skills and practices. If you’ve been a listener for awhile, you’ll know this is one of my favorite topics and something I wholeheartedly credit to unlocking my best work. In this episode: How I learned to trust my intuition Dr. Gervais aptly calls out two journeys to mastery: one of self, and one of craft. I share my perspective on how mastery of craft is a required step to mastering oneself We’re taught that making mistakes is bad so we should avoid them. What we really should be taught is it’s not about avoiding mistakes, it’s about error recovery. and much more… Enjoy! FOLLOW MICHAEL: instagram | twitter […] The post Finding Mastery: A Conversation with Michael Gervais appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast failure fear intuition mastery michael gervais mindset seahawks
on Choose Wonder Over Worry with Amber Rae By feedproxy.google.com Published On :: Wed, 18 Mar 2020 13:15:24 +0000 In a time when fear, doubt, and uncertainty creep in, it’s more important than ever to tune into our emotional wellness and health. That’s why I’m excited to share my conversation with Amber Rae on the show today. Amber Rae has been called “The Brené Brown of Wonder.” She’s a multi-talented artist, entrepreneur, and author. Her work has been featured in The New York Times, NY Mag, TODAY, Self, Fortune, Forbes and Entrepreneur and collaborated with numerous big brands. She reaches over 2 million people per week with her words and art. Her book Choose Wonder Over Worry: Move Beyond Fear and Doubt to Unlock Your Full Potential is so timely right now and her art helps us explore, visualize, and bring our well-being to the forefront. In our conversation: We are not our feelings and some of our internal voices are not all ours. How family trauma and/or generational trauma can effect us Amber shares her personal experiments to explore inner healing, including naming her inner critics and how it allows her to be able to be more observant of what comes Addiction and how can we create “wake up” calls as a catalyst for change and much more. […] The post Choose Wonder Over Worry with Amber Rae appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast addiction doubt fear happiness health self-awareness stress trauma wellness wonder worry
on Create the Change You Seek with Jonah Berger By feedproxy.google.com Published On :: Wed, 08 Apr 2020 13:15:57 +0000 Jonah Berger is a marketing professor at the Wharton School at the University of Pennsylvania and internationally bestselling author of Contagious, Invisible Influence, and The Catalyst. Dr. Berger is a world-renowned expert on change, word of mouth, influence, consumer behavior, and how products, ideas, and behaviors catch on. He has published over 50 articles in top‐tier academic journals, teaches Wharton’s highest rated online course, and popular outlets like The New York Times and Harvard Business Review often cover his work. He’s keynoted hundred of events, and often consults for organizations like Google, Apple, Nike, and the Gates Foundation. Enjoy! FOLLOW JONAH: instagram | twitter | website Listen to the Podcast Subscribe Watch the Episode This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, Grammy Award winners, New York Times best selling authors and the best entrepreneurs of our times. The post Create the Change You Seek with Jonah Berger appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast
on Ben Moon: Surf, Survival, and Life on the Road By feedproxy.google.com Published On :: Tue, 14 Apr 2020 13:01:51 +0000 Since we’re home, I’m working to bring more LIVE conversations to you from our living rooms. ???? Join me + adventure photographer / filmmaker Ben Moon at 12:30PM PST tomorrow. There will be a live chat, so please ask us some questions as well. See you there. You might know Ben from his adventure and lifestyle photography or his beautiful films. Surviving cancer in his 20s gradually shifted his artistic focus from capturing the pursuit of adventure to telling nuanced human stories that have inspired and impacted millions. Most notably, his personal story battling colorectal cancer and his special relationship with his dog Denali, which he shares in his beautiful viral short film, now turned book, Denali. ABOUT BEN Ben Moon is an adventure, lifestyle, and portrait photographer whose vibrant images have graced the pages of Patagonia catalogues for the past 18 years. In recent years, he has shifted his focus to filmmaking. In 2015, he founded his production company, Moonhouse as a platform for collaboration with friends and creatives to bring a wide range of thought-provoking, impactful and cinematically beautiful stories to life on-screen. As a director, Ben’s unique ability to connect with his subjects paired with the talent […] The post Ben Moon: Surf, Survival, and Life on the Road appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast adventure photography relationships self development surfing
on How to Find Yourself with Glennon Doyle By feedproxy.google.com Published On :: Wed, 22 Apr 2020 12:10:36 +0000 Very excited to have my friend, truth-teller, and Bestselling Author, Glennon Doyle back on the show. Her newly released book, UNTAMED, is a powerful memoir and wake-up call about being forged in the fire of anger, heartbreak, and discontent to finally finding yourself. In this episode, we’re coming to you LIVE from our living rooms to chat about how to listen to the inner voice and take control of your life. If you’re not familiar with Glennon’s work, she is the bestselling author of many books including LOVE WARRIOR, which was selected as an Oprah’s Book Club pick, as well as the New York Times bestseller CARRY ON, WARRIOR. An activist and thought leader, Glennon was named among SuperSoul100’s inaugural group of “awakened leaders who are using their voices and talent to elevate humanity.” She is the founder and president of Together Rising, an all-women led nonprofit organization that has revolutionized grassroots philanthropy – raising over $20 Million for women, families and children in crisis. She lives in Florida with her wife and three children. Enjoy! FOLLOW GLENNON: instagram | twitter | website Listen to the Podcast Subscribe Watch the Episode This podcast is brought to you by CreativeLive. CreativeLive […] The post How to Find Yourself with Glennon Doyle appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast fear personal development relationships self confidence self-care trust
on Resilience + Reinvention with Canlis Restaurateurs By feedproxy.google.com Published On :: Mon, 27 Apr 2020 21:00:34 +0000 In any uncertain time there, we can both feel anxious, upset, curious and we can also look for opportunities. Opportunities for reinvention, for connection, and community in ways we haven’t seen before. That’s the theme of today’s episode with some of my good friends Mark and Brian Canlis + James Beard Award Winning Chef Brady Williams in a conversation we recorded for CreativeLive TV. Mark and Brian run an iconic restaurant in Seattle named Canlis. It’s been a family business for over 70 years. Faced with these uncertain times, they share how they’ve reinvented their business 3 times over the last couple of months. No matter what industry you’re in, their story of overcoming obstacles, problem solving and heart is wisdom for all of us. Enjoy! FOLLOW CANLIS: instagram | website Listen to the Podcast Subscribe Watch the Episode This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, Grammy Award winners, New York Times best selling authors […] The post Resilience + Reinvention with Canlis Restaurateurs appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast
on Hope in a Sea of Endless Calamity with Mark Manson By feedproxy.google.com Published On :: Wed, 06 May 2020 13:05:54 +0000 Today on the show, I’m chatting with New York Times bestselling author Mark Manson. He is the #1 New York Times Bestselling author of Everything is F*cked and The Subtle Art of Not Giving a F*ck, the mega-bestseller that reached #1 in fourteen different countries. Mark also runs one of the largest personal growth websites in the world, MarkManson.net, a blog with more than two million monthly readers and half a million subscribers, making him one of the largest and most successful independent publishers in the world. In this episode, we take a deep dive into the creative process. How to spend your time when you’re trying get comfortable with being uncomfortable. Mark helps bring into focus the up-side that this moment has created for us while also sharing some of the tactics he while quarantined. Enjoy! FOLLOW MARK: instagram | twitter | website Listen to the Podcast Subscribe This podcast is brought to you by CreativeLive. CreativeLive is the world’s largest hub for online creative education in photo/video, art/design, music/audio, craft/maker, money/life and the ability to make a living in any of those disciplines. They are high quality, highly curated classes taught by the world’s top experts — Pulitzer, Oscar, […] The post Hope in a Sea of Endless Calamity with Mark Manson appeared first on Chase Jarvis Photography. Full Article chasejarvisLIVE Podcast anxiety fear happiness personal development self confidence self help
on Concurrency & Multithreading in iOS By feedproxy.google.com Published On :: Tue, 25 Feb 2020 08:00:00 -0500 Concurrency is the notion of multiple things happening at the same time. This is generally achieved either via time-slicing, or truly in parallel if multiple CPU cores are available to the host operating system. We've all experienced a lack of concurrency, most likely in the form of an app freezing up when running a heavy task. UI freezes don't necessarily occur due to the absence of concurrency — they could just be symptoms of buggy software — but software that doesn't take advantage of all the computational power at its disposal is going to create these freezes whenever it needs to do something resource-intensive. If you've profiled an app hanging in this way, you'll probably see a report that looks like this: Anything related to file I/O, data processing, or networking usually warrants a background task (unless you have a very compelling excuse to halt the entire program). There aren't many reasons that these tasks should block your user from interacting with the rest of your application. Consider how much better the user experience of your app could be if instead, the profiler reported something like this: Analyzing an image, processing a document or a piece of audio, or writing a sizeable chunk of data to disk are examples of tasks that could benefit greatly from being delegated to background threads. Let's dig into how we can enforce such behavior into our iOS applications. A Brief History In the olden days, the maximum amount of work per CPU cycle that a computer could perform was determined by the clock speed. As processor designs became more compact, heat and physical constraints started becoming limiting factors for higher clock speeds. Consequentially, chip manufacturers started adding additional processor cores on each chip in order to increase total performance. By increasing the number of cores, a single chip could execute more CPU instructions per cycle without increasing its speed, size, or thermal output. There's just one problem... How can we take advantage of these extra cores? Multithreading. Multithreading is an implementation handled by the host operating system to allow the creation and usage of n amount of threads. Its main purpose is to provide simultaneous execution of two or more parts of a program to utilize all available CPU time. Multithreading is a powerful technique to have in a programmer's toolbelt, but it comes with its own set of responsibilities. A common misconception is that multithreading requires a multi-core processor, but this isn't the case — single-core CPUs are perfectly capable of working on many threads, but we'll take a look in a bit as to why threading is a problem in the first place. Before we dive in, let's look at the nuances of what concurrency and parallelism mean using a simple diagram: In the first situation presented above, we observe that tasks can run concurrently, but not in parallel. This is similar to having multiple conversations in a chatroom, and interleaving (context-switching) between them, but never truly conversing with two people at the same time. This is what we call concurrency. It is the illusion of multiple things happening at the same time when in reality, they're switching very quickly. Concurrency is about dealing with lots of things at the same time. Contrast this with the parallelism model, in which both tasks run simultaneously. Both execution models exhibit multithreading, which is the involvement of multiple threads working towards one common goal. Multithreading is a generalized technique for introducing a combination of concurrency and parallelism into your program. The Burden of Threads A modern multitasking operating system like iOS has hundreds of programs (or processes) running at any given moment. However, most of these programs are either system daemons or background processes that have very low memory footprint, so what is really needed is a way for individual applications to make use of the extra cores available. An application (process) can have many threads (sub-processes) operating on shared memory. Our goal is to be able to control these threads and use them to our advantage. Historically, introducing concurrency to an app has required the creation of one or more threads. Threads are low-level constructs that need to be managed manually. A quick skim through Apple's Threaded Programming Guide is all it takes to see how much complexity threaded code adds to a codebase. In addition to building an app, the developer has to: Responsibly create new threads, adjusting that number dynamically as system conditions change Manage them carefully, deallocating them from memory once they have finished executing Leverage synchronization mechanisms like mutexes, locks, and semaphores to orchestrate resource access between threads, adding even more overhead to application code Mitigate risks associated with coding an application that assumes most of the costs associated with creating and maintaining any threads it uses, and not the host OS This is unfortunate, as it adds enormous levels of complexity and risk without any guarantees of improved performance. Grand Central Dispatch iOS takes an asynchronous approach to solving the concurrency problem of managing threads. Asynchronous functions are common in most programming environments, and are often used to initiate tasks that might take a long time, like reading a file from the disk, or downloading a file from the web. When invoked, an asynchronous function executes some work behind the scenes to start a background task, but returns immediately, regardless of how long the original task might takes to actually complete. A core technology that iOS provides for starting tasks asynchronously is Grand Central Dispatch (or GCD for short). GCD abstracts away thread management code and moves it down to the system level, exposing a light API to define tasks and execute them on an appropriate dispatch queue. GCD takes care of all thread management and scheduling, providing a holistic approach to task management and execution, while also providing better efficiency than traditional threads. Let's take a look at the main components of GCD: What've we got here? Let's start from the left: DispatchQueue.main: The main thread, or the UI thread, is backed by a single serial queue. All tasks are executed in succession, so it is guaranteed that the order of execution is preserved. It is crucial that you ensure all UI updates are designated to this queue, and that you never run any blocking tasks on it. We want to ensure that the app's run loop (called CFRunLoop) is never blocked in order to maintain the highest framerate. Subsequently, the main queue has the highest priority, and any tasks pushed onto this queue will get executed immediately. DispatchQueue.global: A set of global concurrent queues, each of which manage their own pool of threads. Depending on the priority of your task, you can specify which specific queue to execute your task on, although you should resort to using default most of the time. Because tasks on these queues are executed concurrently, it doesn't guarantee preservation of the order in which tasks were queued. Notice how we're not dealing with individual threads anymore? We're dealing with queues which manage a pool of threads internally, and you will shortly see why queues are a much more sustainable approach to multhreading. Serial Queues: The Main Thread As an exercise, let's look at a snippet of code below, which gets fired when the user presses a button in the app. The expensive compute function can be anything. Let's pretend it is post-processing an image stored on the device. import UIKit class ViewController: UIViewController { @IBAction func handleTap(_ sender: Any) { compute() } private func compute() -> Void { // Pretending to post-process a large image. var counter = 0 for _ in 0..<9999999 { counter += 1 } } } At first glance, this may look harmless, but if you run this inside of a real app, the UI will freeze completely until the loop is terminated, which will take... a while. We can prove it by profiling this task in Instruments. You can fire up the Time Profiler module of Instruments by going to Xcode > Open Developer Tool > Instruments in Xcode's menu options. Let's look at the Threads module of the profiler and see where the CPU usage is highest. We can see that the Main Thread is clearly at 100% capacity for almost 5 seconds. That's a non-trivial amount of time to block the UI. Looking at the call tree below the chart, we can see that the Main Thread is at 99.9% capacity for 4.43 seconds! Given that a serial queue works in a FIFO manner, tasks will always complete in the order in which they were inserted. Clearly the compute() method is the culprit here. Can you imagine clicking a button just to have the UI freeze up on you for that long? Background Threads How can we make this better? DispatchQueue.global() to the rescue! This is where background threads come in. Referring to the GCD architecture diagram above, we can see that anything that is not the Main Thread is a background thread in iOS. They can run alongside the Main Thread, leaving it fully unoccupied and ready to handle other UI events like scrolling, responding to user events, animating etc. Let's make a small change to our button click handler above: class ViewController: UIViewController { @IBAction func handleTap(_ sender: Any) { DispatchQueue.global(qos: .userInitiated).async { [unowned self] in self.compute() } } private func compute() -> Void { // Pretending to post-process a large image. var counter = 0 for _ in 0..<9999999 { counter += 1 } } } Unless specified, a snippet of code will usually default to execute on the Main Queue, so in order to force it to execute on a different thread, we'll wrap our compute call inside of an asynchronous closure that gets submitted to the DispatchQueue.global queue. Keep in mind that we aren't really managing threads here. We're submitting tasks (in the form of closures or blocks) to the desired queue with the assumption that it is guaranteed to execute at some point in time. The queue decides which thread to allocate the task to, and it does all the hard work of assessing system requirements and managing the actual threads. This is the magic of Grand Central Dispatch. As the old adage goes, you can't improve what you can't measure. So we measured our truly terrible button click handler, and now that we've improved it, we'll measure it once again to get some concrete data with regards to performance. Looking at the profiler again, it's quite clear to us that this is a huge improvement. The task takes an identical amount of time, but this time, it's happening in the background without locking up the UI. Even though our app is doing the same amount of work, the perceived performance is much better because the user will be free to do other things while the app is processing. You may have noticed that we accessed a global queue of .userInitiated priority. This is an attribute we can use to give our tasks a sense of urgency. If we run the same task on a global queue of and pass it a qos attribute of background , iOS will think it's a utility task, and thus allocate fewer resources to execute it. So, while we don't have control over when our tasks get executed, we do have control over their priority. A Note on Main Thread vs. Main Queue You might be wondering why the Profiler shows "Main Thread" and why we're referring to it as the "Main Queue". If you refer back to the GCD architecture we described above, the Main Queue is solely responsible for managing the Main Thread. The Dispatch Queues section in the Concurrency Programming Guide says that "the main dispatch queue is a globally available serial queue that executes tasks on the application’s main thread. Because it runs on your application’s main thread, the main queue is often used as a key synchronization point for an application." The terms "execute on the Main Thread" and "execute on the Main Queue" can be used interchangeably. Concurrent Queues So far, our tasks have been executed exclusively in a serial manner. DispatchQueue.main is by default a serial queue, and DispatchQueue.global gives you four concurrent dispatch queues depending on the priority parameter you pass in. Let's say we want to take five images, and have our app process them all in parallel on background threads. How would we go about doing that? We can spin up a custom concurrent queue with an identifier of our choosing, and allocate those tasks there. All that's required is the .concurrent attribute during the construction of the queue. class ViewController: UIViewController { let queue = DispatchQueue(label: "com.app.concurrentQueue", attributes: .concurrent) let images: [UIImage] = [UIImage].init(repeating: UIImage(), count: 5) @IBAction func handleTap(_ sender: Any) { for img in images { queue.async { [unowned self] in self.compute(img) } } } private func compute(_ img: UIImage) -> Void { // Pretending to post-process a large image. var counter = 0 for _ in 0..<9999999 { counter += 1 } } } Running that through the profiler, we can see that the app is now spinning up 5 discrete threads to parallelize a for-loop. Parallelization of N Tasks So far, we've looked at pushing computationally expensive task(s) onto background threads without clogging up the UI thread. But what about executing parallel tasks with some restrictions? How can Spotify download multiple songs in parallel, while limiting the maximum number up to 3? We can go about this in a few ways, but this is a good time to explore another important construct in multithreaded programming: semaphores. Semaphores are signaling mechanisms. They are commonly used to control access to a shared resource. Imagine a scenario where a thread can lock access to a certain section of the code while it executes it, and unlocks after it's done to let other threads execute the said section of the code. You would see this type of behavior in database writes and reads, for example. What if you want only one thread writing to a database and preventing any reads during that time? This is a common concern in thread-safety called Readers-writer lock. Semaphores can be used to control concurrency in our app by allowing us to lock n number of threads. let kMaxConcurrent = 3 // Or 1 if you want strictly ordered downloads! let semaphore = DispatchSemaphore(value: kMaxConcurrent) let downloadQueue = DispatchQueue(label: "com.app.downloadQueue", attributes: .concurrent) class ViewController: UIViewController { @IBAction func handleTap(_ sender: Any) { for i in 0..<15 { downloadQueue.async { [unowned self] in // Lock shared resource access semaphore.wait() // Expensive task self.download(i + 1) // Update the UI on the main thread, always! DispatchQueue.main.async { tableView.reloadData() // Release the lock semaphore.signal() } } } } func download(_ songId: Int) -> Void { var counter = 0 // Simulate semi-random download times. for _ in 0..<Int.random(in: 999999...10000000) { counter += songId } } } Notice how we've effectively restricted our download system to limit itself to k number of downloads. The moment one download finishes (or thread is done executing), it decrements the semaphore, allowing the managing queue to spawn another thread and start downloading another song. You can apply a similar pattern to database transactions when dealing with concurrent reads and writes. Semaphores usually aren't necessary for code like the one in our example, but they become more powerful when you need to enforce synchronous behavior whille consuming an asynchronous API. The above could would work just as well with a custom NSOperationQueue with a maxConcurrentOperationCount, but it's a worthwhile tangent regardless. Finer Control with OperationQueue GCD is great when you want to dispatch one-off tasks or closures into a queue in a 'set-it-and-forget-it' fashion, and it provides a very lightweight way of doing so. But what if we want to create a repeatable, structured, long-running task that produces associated state or data? And what if we want to model this chain of operations such that they can be cancelled, suspended and tracked, while still working with a closure-friendly API? Imagine an operation like this: This would be quite cumbersome to achieve with GCD. We want a more modular way of defining a group of tasks while maintaining readability and also exposing a greater amount of control. In this case, we can use Operation objects and queue them onto an OperationQueue, which is a high-level wrapper around DispatchQueue. Let's look at some of the benefits of using these abstractions and what they offer in comparison to the lower-level GCI API: You may want to create dependencies between tasks, and while you could do this via GCD, you're better off defining them concretely as Operation objects, or units of work, and pushing them onto your own queue. This would allow for maximum reusability since you may use the same pattern elsewhere in an application. The Operation and OperationQueue classes have a number of properties that can be observed, using KVO (Key Value Observing). This is another important benefit if you want to monitor the state of an operation or operation queue. Operations can be paused, resumed, and cancelled. Once you dispatch a task using Grand Central Dispatch, you no longer have control or insight into the execution of that task. The Operation API is more flexible in that respect, giving the developer control over the operation's life cycle. OperationQueue allows you to specify the maximum number of queued operations that can run simultaneously, giving you a finer degree of control over the concurrency aspects. The usage of Operation and OperationQueue could fill an entire blog post, but let's look at a quick example of what modeling dependencies looks like. (GCD can also create dependencies, but you're better off dividing up large tasks into a series of composable sub-tasks.) In order to create a chain of operations that depend on one another, we could do something like this: class ViewController: UIViewController { var queue = OperationQueue() var rawImage = UIImage? = nil let imageUrl = URL(string: "https://example.com/portrait.jpg")! @IBOutlet weak var imageView: UIImageView! let downloadOperation = BlockOperation { let image = Downloader.downloadImageWithURL(url: imageUrl) OperationQueue.main.async { self.rawImage = image } } let filterOperation = BlockOperation { let filteredImage = ImgProcessor.addGaussianBlur(self.rawImage) OperationQueue.main.async { self.imageView = filteredImage } } filterOperation.addDependency(downloadOperation) [downloadOperation, filterOperation].forEach { queue.addOperation($0) } } So why not opt for a higher level abstraction and avoid using GCD entirely? While GCD is ideal for inline asynchronous processing, Operation provides a more comprehensive, object-oriented model of computation for encapsulating all of the data around structured, repeatable tasks in an application. Developers should use the highest level of abstraction possible for any given problem, and for scheduling consistent, repeated work, that abstraction is Operation. Other times, it makes more sense to sprinkle in some GCD for one-off tasks or closures that we want to fire. We can mix both OperationQueue and GCD to get the best of both worlds. The Cost of Concurrency DispatchQueue and friends are meant to make it easier for the application developer to execute code concurrently. However, these technologies do not guarantee improvements to the efficiency or responsiveness in an application. It is up to you to use queues in a manner that is both effective and does not impose an undue burden on other resources. For example, it's totally viable to create 10,000 tasks and submit them to a queue, but doing so would allocate a nontrivial amount of memory and introduce a lot of overhead for the allocation and deallocation of operation blocks. This is the opposite of what you want! It's best to profile your app thoroughly to ensure that concurrency is enhancing your app's performance and not degrading it. We've talked about how concurrency comes at a cost in terms of complexity and allocation of system resources, but introducing concurrency also brings a host of other risks like: Deadlock: A situation where a thread locks a critical portion of the code and can halt the application's run loop entirely. In the context of GCD, you should be very careful when using the dispatchQueue.sync { } calls as you could easily get yourself in situations where two synchronous operations can get stuck waiting for each other. Priority Inversion: A condition where a lower priority task blocks a high priority task from executing, which effectively inverts their priorities. GCD allows for different levels of priority on its background queues, so this is quite easily a possibility. Producer-Consumer Problem: A race condition where one thread is creating a data resource while another thread is accessing it. This is a synchronization problem, and can be solved using locks, semaphores, serial queues, or a barrier dispatch if you're using concurrent queues in GCD. ...and many other sorts of locking and data-race conditions that are hard to debug! Thread safety is of the utmost concern when dealing with concurrency. Parting Thoughts + Further Reading If you've made it this far, I applaud you. Hopefully this article gives you a lay of the land when it comes to multithreading techniques on iOS, and how you can use some of them in your app. We didn't get to cover many of the lower-level constructs like locks, mutexes and how they help us achieve synchronization, nor did we get to dive into concrete examples of how concurrency can hurt your app. We'll save those for another day, but you can dig into some additional reading and videos if you're eager to dive deeper. Building Concurrent User Interfaces on iOS (WWDC 2012) Concurrency and Parallelism: Understanding I/O Apple's Official Concurrency Programming Guide Mutexes and Closure Capture in Swift Locks, Thread Safety, and Swift Advanced NSOperations (WWDC 2015) NSHipster: NSOperation Full Article Code
on Committed to the wrong branch? -, @{upstream}, and @{-1} to the rescue By feedproxy.google.com Published On :: Thu, 27 Feb 2020 00:00:00 -0500 I get into this situation sometimes. Maybe you do too. I merge feature work into a branch used to collect features, and then continue development but on that branch instead of back on the feature branch git checkout feature # ... bunch of feature commits ... git push git checkout qa-environment git merge --no-ff --no-edit feature git push # deploy qa-environment to the QA remote environment # ... more feature commits ... # oh. I'm not committing in the feature branch like I should be and have to move those commits to the feature branch they belong in and take them out of the throwaway accumulator branch git checkout feature git cherry-pick origin/qa-environment..qa-environment git push git checkout qa-environment git reset --hard origin/qa-environment git merge --no-ff --no-edit feature git checkout feature # ready for more feature commits Maybe you prefer git branch -D qa-environment git checkout qa-environment over git checkout qa-environment git reset --hard origin/qa-environment Either way, that works. But it'd be nicer if we didn't have to type or even remember the branches' names and the remote's name. They are what is keeping this from being a context-independent string of commands you run any time this mistake happens. That's what we're going to solve here.Shorthands for longevityI like to use all possible natively supported shorthands. There are two broad motivations for that.Fingers have a limited number of movements in them. Save as many as possible left late in life.Current research suggests that multitasking has detrimental effects on memory. Development tends to be very heavy on multitasking. Maybe relieving some of the pressure on quick-access short term memory (like knowing all relevant branch names) add up to leave a healthier memory down the line.First up for our scenario: the - shorthand, which refers to the previously checked out branch. There are a few places we can't use it, but it helps a lot: Bash # USING - git checkout feature # hack hack hack git push git checkout qa-environment git merge --no-ff --no-edit - # ???? git push # hack hack hack # whoops git checkout - # now on feature ???? git cherry-pick origin/qa-environment..qa-environment git push git checkout - # now on qa-environment ???? git reset --hard origin/qa-environment git merge --no-ff --no-edit - # ???? git checkout - # ???? # on feature and ready for more feature commits Bash # ORIGINAL git checkout feature # hack hack hack git push git checkout qa-environment git merge --no-ff --no-edit feature git push # hack hack hack # whoops git checkout feature git cherry-pick origin/qa-environment..qa-environment git push git checkout qa-environment git reset --hard origin/qa-environment git merge --no-ff --no-edit feature git checkout feature # ready for more feature commits Switch We cannot use - when cherry-picking a range > git cherry-pick origin/-..- fatal: bad revision 'origin/-..-' > git cherry-pick origin/qa-environment..- fatal: bad revision 'origin/qa-environment..-' and even if we could we'd still have provide the remote's name (here, origin).That shorthand doesn't apply in the later reset --hard command, and we cannot use it in the branch -D && checkout approach either. branch -D does not support the - shorthand and once the branch is deleted checkout can't reach it with -: # assuming that branch-a has an upstream origin/branch-a > git checkout branch-a > git checkout branch-b > git checkout - > git branch -D - error: branch '-' not found. > git branch -D branch-a > git checkout - error: pathspec '-' did not match any file(s) known to git So we have to remember the remote's name (we know it's origin because we are devoting memory space to knowing that this isn't one of those times it's something else), the remote tracking branch's name, the local branch's name, and we're typing those all out. No good! Let's figure out some shorthands.@{-<n>} is hard to say but easy to fall in love withWe can do a little better by using @{-<n>} (you'll also sometimes see it referred to be the older @{-N}). It is a special construct for referring to the nth previously checked out ref. > git checkout branch-a > git checkout branch-b > git rev-parse --abbrev-rev @{-1} # the name of the previously checked out branch branch-a > git checkout branch-c > git rev-parse --abbrev-rev @{-2} # the name of branch checked out before the previously checked out one branch-a Back in our scenario, we're on qa-environment, we switch to feature, and then want to refer to qa-environment. That's @{-1}! So instead of git cherry-pick origin/qa-environment..qa-environment We can do git cherry-pick origin/qa-environment..@{-1} Here's where we are (🎉 marks wins from -, 💥 marks the win from @{-1}) Bash # USING - AND @{-1} git checkout feature # hack hack hack git push git checkout qa-environment git merge --no-ff --no-edit - # ???? git push # hack hack hack # whoops git checkout - # ???? git cherry-pick origin/qa-environment..@{-1} # ???? git push git checkout - # ???? git reset --hard origin/qa-environment git merge --no-ff --no-edit - # ???? git checkout - # ???? # ready for more feature commits Bash # ORIGINAL git checkout feature # hack hack hack git push git checkout qa-environment git merge --no-ff --no-edit feature git push # hack hack hack # whoops git checkout feature git cherry-pick origin/qa-environment..qa-environment git push git checkout qa-environment git reset --hard origin/qa-environment git merge --no-ff --no-edit feature git checkout feature # ready for more feature commits Switch One down, two to go: we're still relying on memory for the remote's name and the remote branch's name and we're still typing both out in full. Can we replace those with generic shorthands?@{-1} is the ref itself, not the ref's name, we can't do > git cherry-pick origin/@{-1}..@{-1} origin/@{-1} fatal: ambiguous argument 'origin/@{-1}': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' because there is no branch origin/@{-1}. For the same reason, @{-1} does not give us a generalized shorthand for the scenario's later git reset --hard origin/qa-environment command.But good news!Do @{u} @{push} @{upstream} or its shorthand @{u} is the remote branch a that would be pulled from if git pull were run. @{push} is the remote branch that would be pushed to if git push was run. > git checkout branch-a Switched to branch 'branch-a' Your branch is ahead of 'origin/branch-a' by 3 commits. (use "git push" to publish your local commits) > git reset --hard origin/branch-a HEAD is now at <the SHA origin/branch-a is at> we can > git checkout branch-a Switched to branch 'branch-a' Your branch is ahead of 'origin/branch-a' by 3 commits. (use "git push" to publish your local commits) > git reset --hard @{u} # <-- So Cool! HEAD is now at <the SHA origin/branch-a is at> Tacking either onto a branch name will give that branch's @{upstream} or @{push}. For example git checkout branch-a@{u} is the branch branch-a pulls from.In the common workflow where a branch pulls from and pushes to the same branch, @{upstream} and @{push} will be the same, leaving @{u} as preferable for its terseness. @{push} shines in triangular workflows where you pull from one remote and push to another (see the external links below).Going back to our scenario, it means short, portable commands with a minimum human memory footprint. (🎉 marks wins from -, 💥 marks the win from @{-1}, 😎 marks the wins from @{u}.) Bash # USING - AND @{-1} AND @{u} git checkout feature # hack hack hack git push git checkout qa-environment git merge --no-ff --no-edit - # ???? git push # hack hack hack # whoops git checkout - # ???? git cherry-pick @{-1}@{u}..@{-1} # ???????? git push git checkout - # ???? git reset --hard @{u} # ???? git merge --no-ff --no-edit - # ???? git checkout - # ???? # ready for more feature commits Bash # ORIGINAL git checkout feature # hack hack hack git push git checkout qa-environment git merge --no-ff --no-edit feature git push # hack hack hack # whoops git checkout feature git cherry-pick origin/qa-environment..qa-environment git push git checkout qa-environment git reset --hard origin/qa-environment git merge --no-ff --no-edit feature git checkout feature # ready for more feature commits Switch Make the things you repeat the easiest to doBecause these commands are generalized, we can run some series of them once, maybe git checkout - && git reset --hard @{u} && git checkout - or git checkout - && git cherry-pick @{-1}@{u}.. @{-1} && git checkout - && git reset --hard @{u} && git checkout - and then those will be in the shell history just waiting to be retrieved and run again the next time, whether with CtrlR incremental search or history substring searching bound to the up arrow or however your interactive shell is configured. Or make it an alias, or even better an abbreviation if your interactive shell supports them. Save the body wear and tear, give memory a break, and level up in Git.And keep goingThe GitHub blog has a good primer on triangular workflows and how they can polish your process of contributing to external projects.The FreeBSD Wiki has a more in-depth article on triangular workflow process (though it doesn't know about @{push} and @{upstream}).The construct @{-<n>} and the suffixes @{push} and @{upstream} are all part of the gitrevisions spec. Direct links to each:@{-<n>}@{push}@{upstream} Full Article Code Front-end Engineering Back-end Engineering
on TrailBuddy: Using AI to Create a Predictive Trail Conditions App By feedproxy.google.com Published On :: Thu, 19 Mar 2020 08:00:00 -0400 Viget is full of outdoor enthusiasts and, of course, technologists. For this year's Pointless Weekend, we brought these passions together to build TrailBuddy. This app aims to solve that eternal question: Is my favorite trail dry so I can go hike/run/ride? While getting muddy might rekindle fond childhood memories for some, exposing your gear to the elements isn’t great – it’s bad for your equipment and can cause long-term, and potentially expensive, damage to the trail. There are some trail apps out there but we wanted one that would focus on current conditions. Currently, our favorites trail apps, like mtbproject.com, trailrunproject.com, and hikingproject.com -- all owned by REI, rely on user-reported conditions. While this can be effective, the reports are frequently unreliable, as condition reports can become outdated in just a few days. Our goal was to solve this problem by building an app that brought together location, soil type, and weather history data to create on-demand condition predictions for any trail in the US. We built an initial version of TrailBuddy by tapping into several readily-available APIs, then running the combined data through a machine learning algorithm. (Oh, and also by bringing together a bunch of smart and motivated people and combining them with pizza and some of the magic that is our Pointless Weekends. We'll share the other Pointless Project, Scurry, with you soon.) Learn More We're hiring Front-End Developers in our Boulder, Chattanooga, Durham, Falls Church and Remote (U.S. Only) offices. Learn more and introduce yourself. The quest for data. We knew from the start this app would require data from a number of sources. As previously mentioned, we used REI’s APIs (i.e. https://www.hikingproject.com/data) as the source for basic trail information. We used the trails’ latitude and longitude coordinates as well as its elevation to query weather and soil type. We also found data points such as a trail’s total distance to be relevant to our app users and decided to include that on the front-end, too. Since we wanted to go beyond relying solely on user-reported metrics, which is how REI’s current MTB project works, we came up with a list of factors that could affect the trail for that day. First on that list was weather. We not only considered the impacts of the current forecast, but we also looked at the previous day’s forecast. For example, it’s safe to assume that if it’s currently raining or had been raining over the last several days, it would likely lead to muddy and unfavorable conditions for that trail. We utilized the DarkSky API (https://darksky.net/dev) to get the weather forecasts for that day, as well as the records for previous days. This included expected information, like temperature and precipitation chance. It also included some interesting data points that we realized may be factors, like precipitation intensity, cloud cover, and UV index. But weather alone can’t predict how muddy or dry a trail will be. To determine that for sure, we also wanted to use soil data to help predict how well a trail’s unique soil composition recovers after precipitation. Similar amounts of rain on trails of very different soil types could lead to vastly different trail conditions. A more clay-based soil would hold water much longer, and therefore be much more unfavorable, than loamy soil. Finding a reliable source for soil type and soil drainage proved incredibly difficult. After many hours, we finally found a source through the USDA that we could use. As a side note—the USDA keeps track of lots of data points on soil information that’s actually pretty interesting! We can’t say we’re soil experts but, we felt like we got pretty close. We used Whimsical to build our initial wireframes. Putting our design hats on. From the very first pitch for this app, TrailBuddy’s main differentiator to peer trail resources is its ability to surface real-time information, reliably, and simply. For as complicated as the technology needed to collect and interpret information, the front-end app design needed to be clean and unencumbered. We thought about how users would naturally look for information when setting out to find a trail and what factors they’d think about when doing so. We posed questions like: How easy or difficult of a trail are they looking for?How long is this trail?What does the trail look like?How far away is the trail in relation to my location?For what activity am I needing a trail for? Is this a trail I’d want to come back to in the future? By putting ourselves in our users’ shoes we quickly identified key features TrailBuddy needed to have to be relevant and useful. First, we needed filtering, so users could filter between difficulty and distance to narrow down their results to fit the activity level. Next, we needed a way to look up trails by activity type—mountain biking, hiking, and running are all types of activities REI’s MTB API tracks already so those made sense as a starting point. And lastly, we needed a way for the app to find trails based on your location; or at the very least the ability to find a trail within a certain distance of your current location. We used Figma to design, prototype, and gather feedback on TrailBuddy. Using machine learning to predict trail conditions. As stated earlier, none of us are actual soil or data scientists. So, in order to achieve the real-time conditions reporting TrailBuddy promised, we’d decided to leverage machine learning to make predictions for us. Digging into the utility of machine learning was a first for all of us on this team. Luckily, there was an excellent tutorial that laid out the basics of building an ML model in Python. Provided a CSV file with inputs in the left columns, and the desired output on the right, the script we generated was able to test out multiple different model strategies, and output the effectiveness of each in predicting results, shown below. We assembled all of the historical weather and soil data we could find for a given latitude/longitude coordinate, compiled a 1000 * 100 sized CSV, ran it through the Python evaluator, and found that the CART and SVM models consistently outranked the others in terms of predicting trail status. In other words, we found a working model for which to run our data through and get (hopefully) reliable predictions from. The next step was to figure out which data fields were actually critical in predicting the trail status. The more we could refine our data set, the faster and smarter our predictive model could become. We pulled in some Ruby code to take the original (and quite massive) CSV, and output smaller versions to test with. Now again, we’re no data scientists here but, we were able to cull out a good majority of the data and still get a model that performed at 95% accuracy. With our trained model in hand, we could serialize that to into a model.pkl file (pkl stands for “pickle”, as in we’ve “pickled” the model), move that file into our Rails app along with it a python script to deserialize it, pass in a dynamic set of data, and generate real-time predictions. At the end of the day, our model has a propensity to predict fantastic trail conditions (about 99% of the time in fact…). Just one of those optimistic machine learning models we guess. Where we go from here. It was clear that after two days, our team still wanted to do more. As a first refinement, we’d love to work more with our data set and ML model. Something that was quite surprising during the weekend was that we found we could remove all but two days worth of weather data, and all of the soil data we worked so hard to dig up, and still hit 95% accuracy. Which … doesn’t make a ton of sense. Perhaps the data we chose to predict trail conditions just isn’t a great empirical predictor of trail status. While these are questions too big to solve in just a single weekend, we'd love to spend more time digging into this in a future iteration. Full Article News & Culture
on A Viget Exploration: How Tech Can Help in a Pandemic By feedproxy.google.com Published On :: Wed, 25 Mar 2020 16:49:00 -0400 Viget Explorations have always been the result of our shared curiosities. They’re usually a spontaneous outcome of team downtime and a shared problem we’ve experienced. We use our Explorations to pursue our diverse interests and contribute to the conversations about building a better digital world. As the COVID-19 crisis emerged, we were certainly experiencing a shared problem. As a way to keep busy and manage our anxieties, a small team came together to dive into how technology has helped, and, unfortunately, hindered the community response to the current pandemic. Privia Medical Group Telehealth Native Apps We started by researching the challenges we saw: information overload, a lack of clarity, individual responsibility, and change. Then we brainstormed possible technical solutions that could further improve how communities respond to a pandemic. Click here to see our Exploration on some possible ways to take the panic out of pandemics. While we aren’t currently pursuing the solutions outlined in the Exploration, we’d love to hear what you think about these approaches, as well as any ideas you have for how technology can help address the outlined challenges. Please note, this Exploration doesn’t provide medical information. Visit the Center for Disease Control’s website for current information and COVID-19, its symptoms, and treatments. At Viget, we’re adjusting to this crisis for the safety of our clients, our staff, and our communities. If you’d like to hear from Viget's co-founder, Brian Williams, you can read his article on our response to the situation. Full Article News & Culture
on CLI Equivalents for Common MAMP PRO and Sequel Pro Tasks By feedproxy.google.com Published On :: Thu, 26 Mar 2020 00:00:00 -0400 Working on website front ends I sometimes use MAMP PRO to manage local hosts and Sequel Pro to manage databases. Living primarily in my text editor, a terminal, and a browser window, moving to these click-heavy dedicated apps can feel clunky. Happily, the tasks I have most frequently turned to those apps for —starting and stopping servers, creating new hosts, and importing, exporting, deleting, and creating databases— can be done from the command line. I still pull up MAMP PRO if I need to change a host's PHP version or work with its other more specialized settings, or Sequel Pro to quickly inspect a database, but for the most part I can stay on the keyboard and in my terminal. Here's how: Command Line MAMP PRO You can start and stop MAMP PRO's servers from the command line. You can even do this when the MAMP PRO desktop app isn't open. Note: MAMP PRO's menu icon will not change color to reflect the running/stopped status when the status is changed via the command line. Start the MAMP PRO servers: /Applications/MAMP PRO.app/Contents/MacOS/MAMP PRO cmd startServers Stop the MAMP PRO servers: /Applications/MAMP PRO.app/Contents/MacOS/MAMP PRO cmd stopServers Create a host (replace host_name and root_path): /Applications/MAMP PRO.app/Contents/MacOS/MAMP PRO cmd createHost host_name root_path MAMP PRO-friendly Command Line Sequel Pro Note: if you don't use MAMP PRO, just replace the /Applications/MAMP/Library/bin/mysql with mysql. In all of the following commands, replace username with your user name (locally this is likely root) and database_name with your database name. The -p (password) flag with no argument will trigger an interactive password prompt. This is more secure than including your password in the command itself (like -pYourPasswordHere). Of course, if you're using the default password root is not particular secure to begin with so you might just do -pYourPasswordHere. Setting the -h (host) flag to localhost or 127.0.0.1 tells mysql to look at what's on localhost. With the MAMP PRO servers running, that will be the MAMP PRO databases. # with the MAMP PRO servers running, these are equivalent: # /Applications/MAMP/Library/bin/mysql -h 127.0.0.1 other_options # and # /Applications/MAMP/Library/bin/mysql -h localhost other_options /Applications/MAMP/Library/bin/mysql mysql_options # enter. opens an interactive mysql session mysql> some command; # don't forget the semicolon mysql> exit; Create a local database # with the MAMP PRO servers running # replace `username` with your username, which is `root` by default /Applications/MAMP/Library/bin/mysql -h localhost -u username -p -e "create database database_name" or # with the MAMP PRO servers running # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysql -h localhost -u username -p # and then enter mysql> create database database_name; # don't forget the semicolon mysql> exit MAMP PRO's databases are stored in /Library/Application Support/appsolute/MAMP PRO/db so to confirm that it worked you can ls /Library/Application Support/appsolute/MAMP PRO/db # will output the available mysql versions. For example I have mysql56_2018-11-05_16-25-13 mysql57 # If it isn't clear which one you're after, open the main MAMP PRO and click # on the MySQL "servers and services" item. In my case it shows "Version: 5.7.26" # Now look in the relevant MySQL directory ls /Library/Application Support/appsolute/MAMP PRO/db/mysql57 # the newly created database should be in the list Delete a local database # with the MAMP PRO servers running # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysql -h localhost -u username -p -e "drop database database_name" Export a dump of a local database. Note that this uses mysqldump not mysql. # to export an uncompressed file # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysqldump -h localhost -u username -p database_name > the/output/path.sql # to export a compressed file # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysqldump -h localhost -u username -p database_name | gzip -c > the/output/path.gz Export a local dump from an external database over SSH. Note that this uses mysqldump not mysql. # replace `ssh-user`, `ssh_host`, `mysql_user`, `database_name`, and the output path # to end up with an uncompressed file ssh ssh_user@ssh_host "mysqldump -u mysql_user -p database_name | gzip -c" | gunzip > the/output/path.sql # to end up with a compressed file ssh ssh_user@ssh_host "mysqldump -u mysql_user -p database_name | gzip -c" > the/output/path.gz Import a local database dump into a local database # with the MAMP PRO servers running # replace `username` (`root` by default) and `database_name` /Applications/MAMP/Library/bin/mysql -h localhost -u username -p database_name < the/dump/path.sql Import a local database dump into a remote database over SSH. Use care with this one. But if you are doing it with Sequel Pro —maybe you are copying a Craft site's database from a production server to a QA server— you might as well be able to do it on the command line. ssh ssh_user@ssh_host "mysql -u username -p remote_database_name" < the/local/dump/path.sql For me, using the command line instead of the MAMP PRO and Sequel Pro GUI means less switching between keyboard and mouse, less opening up GUI features that aren't typically visible on my screen, and generally better DX. Give it a try! And while MAMP Pro's CLI is limited to the essentials, command line mysql of course knows no limits. If there's something else you use Sequel Pro for, you may be able to come up with a mysql CLI equivalent you like even better. Full Article Code Front-end Engineering Back-end Engineering
on Pursuing A Professional Certification In Scrum By feedproxy.google.com Published On :: Wed, 22 Apr 2020 08:00:00 -0400 Professional certifications have become increasingly popular in this age of career switchers and the freelance gig economy. A certification can be a useful way to advance your skill set quickly or make your resume stand out, which can be especially important for those trying to break into a new industry or attract business while self-employed. Whatever your reason may be for pursuing a professional certificate, there is one question only you can answer for yourself: is it worth it? Finding first-hand experiences from professionals with similar career goals and passions was the most helpful research I used to answer that question for myself. So, here’s mine; why I decided to get Scrum certified, how I evaluated my options, and if it was really worth it. A shift in mindset My background originates in brand strategy where it’s typical for work to follow a predictable order, each step informing the next. This made linear techniques like water-fall timelines, completing one phase of work in its entirety before moving onto the next, and documenting granular tasks weeks in advance helpful and easy to implement. When I made the move to more digitally focused work, tasks followed a much looser set of ‘typical’ milestones. While the general outline remained the same (strategy, design, development, launch) there was a lot more overlap with how tasks informed each other, and would keep informing and re-informing as an iterative workflow would encourage. Trying to fit a very fluid process into my very stiff linear approach to project planning didn’t work so well. I didn’t have the right strategies to manage risks in a productive way without feeling like the whole project was off track; with the habit of account for granular details all the time, I struggled to lean on others to help define what we should work on and when, and being okay if that changed once, or twice, or three times. Everything I learned about the process of product development came from learning on the job and making a ton of mistakes—and I knew I wanted to get better. Photo by Christin Hume on Unsplash I was fortunate enough to work with a group of developers who were looking to make a change, too. Being ‘agile’-enthusiasts, this group of developers were desperately looking for ways to infuse our approach to product work with agile-minded principles (the broad definition of ‘agile’ comes from ‘The Agile Manifesto’, which has influenced frameworks for organizing people and information, often applied in product development). This not only applied to how I worked with them, but how they worked with each other, and the way we all onboarded clients to these new expectations. This was a huge eye opener to me. Soon enough, I started applying these agile strategies to my day-to-day— running stand-ups, setting up backlogs, and reorganizing the way I thought about work output. It’s from this experience that I decided it may be worth learning these principles more formally. The choice to get certified There is a lot of literature out there about agile methodologies and a lot to be learned from casual research. This benefitted me for a while until I started to work on more complicated projects, or projects with more ambitious feature requests. My decision to ultimately pursue a formal agile certification really came down to three things: An increased use of agile methods across my team. Within my day-to-day I would encounter more team members who were familiar with these tactics and wanted to use them to structure the projects they worked on.The need for a clear definition of what processes to follow. I needed to grasp a real understanding of how to implement agile processes and stay consistent with using them to be an effective champion of these principles.Being able to diversify my experience. Finding ways to differentiate my resume from others with similar experience would be an added benefit to getting a certification. If nothing else, it would demonstrate that I’m curious-minded and proactive about my career. To achieve these things, I gravitated towards a more foundational education in a specific agile-methodology. This made Scrum the most logical choice given it’s the basis for many of the agile strategies out there and its dominance in the field. Evaluating all the options For Scrum education and certification, there are really two major players to consider. Scrum Alliance - Probably the most well known Scrum organization is Scrum Alliance. They are a highly recognizable organization that does a lot to further the broader understanding of Scrum as a practice.Scrum.org - Led by the original co-founder of Scrum, Ken Schwaber, Scrum.org is well-respected and touted for its authority in the industry. Each has their own approach to teaching and awarding certifications as well as differences in price point and course style that are important to be aware of. SCRUM ALLIANCE Pros Strong name recognition and leaders in the Scrum fieldOffers both in-person and online coursesHosts in-person events, webinars, and global conferencesProvides robust amounts of educational resources for its membersHas specialization tracks for folks looking to apply Scrum to their specific disciplineMembers are required to keep their skills up to date by earning educational credits throughout the year to retain their certificationConsistent information across all course administrators ensuring you'll be set up to succeed when taking your certification test. Cons High cost creates a significant barrier to entry (we’re talking in the thousands of dollars here)Courses are required to take the certification testCertification expires after two years, requiring additional investment in time and/or money to retain credentialsDifficult to find sample course material ahead of committing to a courseCourses are several days long which may mean taking time away from a day job to complete them SCRUM.ORG Pros Strong clout due to its founder, Ken Schwaber, who is the originator of ScrumOffers in-person classes and self-paced optionsHosts in-person events and meetups around the worldProvides free resources and materials to the public, including practice testsHas specialization tracks for folks looking to apply Scrum to their specific disciplineMinimum score on certification test required to pass; certification lasts for lifeLower cost for certification when compared to peers Cons Much lesser known to the general public, as compared to its counterpartLess sophisticated educational resources (mostly confined to PDFs or online forums) making digesting the material challengingPractice tests are slightly out of date making them less effective as a study toolSelf-paced education is not structured and therefore can’t ensure you’re learning everything you need to know for the testLack of active and engaging community will leave something to be desired Before coming to a decision, it was helpful to me to weigh these pros and cons against a set of criteria. Here’s a helpful scorecard I used to compare the two institutions. Scrum Alliance Scrum.org Affordability ⚪⚪⚪⚪ Rigor⚪⚪⚪⚪⚪ Reputation⚪⚪⚪⚪⚪ Recognition⚪⚪⚪⚪ Community⚪⚪⚪⚪ Access⚪⚪⚪⚪⚪ Flexibility⚪⚪⚪⚪ Specialization⚪⚪⚪⚪⚪⚪ Requirements⚪⚪⚪⚪ Longevity⚪⚪⚪⚪ For me, the four areas that were most important to me were: Affordability - I’d be self-funding this certificate so the investment of cost would need to be manageable.Self-paced - Not having a lot of time to devote in one sitting, the ability to chip away at coursework was appealing to me.Reputation - Having a certificate backed by a well-respected institution was important to me if I was going to put in the time to achieve this credential.Access - Because I wanted to be a champion for this framework for others in my organization, having access to resources and materials would help me do that more effectively. Ultimately, I decided upon a Professional Scrum Master certification from Scrum.org! The price and flexibility of learning course content were most important to me. I found a ton of free materials on Scrum.org that I could study myself and their practice tests gave me a good idea of how well I was progressing before I committed to the cost of actually taking the test. And, the pedigree of certification felt comparable to that of Scrum Alliance, especially considering that the founder of Scrum himself ran the organization. Putting a certificate to good use I don’t work in a formal Agile company, and not everyone I work with knows the ins and outs of Scrum. I didn’t use my certification to leverage a career change or new job title. So after all that time, money, and energy, was it worth it?I think so. I feel like I use my certification every day and employ many of the principles of Scrum in my day-to-day management of projects and people. Self-organizing teams is really important when fostering trust and collaboration among project members. This means leaning on each other’s past experiences and lessons learned to inform our own approach to work. It also means taking a step back as a project manager to recognize the strengths on your team and trust their lead.Approaching things in bite size pieces is also a best practice I use every day. Even when there isn't a mandated sprint rhythm, breaking things down into effort level, goals, and requirements is an excellent way to approach work confidently and avoid getting too overwhelmed.Retrospectives and stand ups are also absolute musts for Scrum practices, and these can be modified to work for companies and project teams of all shapes and sizes. Keeping a practice of collective communication and reflection will keep a team humming and provides a safe space to vent and improve. Photo by Gautam Lakum on Unsplash Parting advice I think furthering your understanding of industry standards and keeping yourself open to new ways of working will always benefit you as a professional. Professional certifications are readily available and may be more relevant than ever. If you’re on this path, good luck! And here are some things to consider: Do your research – With so many educational institutions out there, you can definitely find the right one for you, with the level of rigor you’re looking for.Look for company credits or incentives – some companies cover part or all of the cost for continuing education.Get started ASAP – You don’t need a full certification to start implementing small tactics to your workflows. Implementing learnings gradually will help you determine if it’s really something you want to pursue more formally. Full Article News & Culture Project Management
on Cute Collection of 210 User Interface Icons By feedproxy.google.com Published On :: Wed, 16 Aug 2017 18:54:12 +0000 Did you remember how was your life before Freepik and Flaticon. No I can’t remember the dark ages either. To celebrate this golden times, they are giving away once more an incredible package of 210 User Interface Icons in 3 versions: Flat, filled and lineal. Download This work is licensed under a Creative Commons Attribution 3.0 License … Cute Collection of 210 User Interface Icons Read More » Full Article Freebies
on Freebie: 264 Vector Audio DJ Pack Icons By feedproxy.google.com Published On :: Thu, 28 Dec 2017 16:58:29 +0000 Icons packs are among the most desirable freebies around. There are several out there, going from a wide array of topics from user interfaces to personal finance. But sometimes you can find some rather unusual but clever additions to the icons universe. This Vector Audio DJ Pack is a nice example, brought to you exclusively … Freebie: 264 Vector Audio DJ Pack Icons Read More » Full Article Freebies