w Corruption Is Bad, But Sabotage Is Worse By feedproxy.google.com Published On :: Thu, 14 Jun 2018 00:17:23 +0000 By Jill Richardson Otherwords Both are bad, but Scott Pruitt’s abuse of our environment is far more dangerous than his abuse of taxpayer money. Did you hear that the head of the Environmental Protection Agency (EPA), Scott Pruitt, is so … Continue reading → Full Article Points of View & Opinions corrpution EPA Scott Pruitt
w What is Our Land For? By feedproxy.google.com Published On :: Wed, 25 Jul 2018 18:52:38 +0000 By Jill Richardson OtherWords Should we graze it, log it, drill it, and mine it? Or should we preserve it, study it, recreate in it, and revere it? The Trump administration accidentally released documents showing that they intentionally underestimated the … Continue reading → Full Article Points of View & Opinions conservation land use national monuments National Parks
w One of Our Last Links to the Wild World is in Danger By feedproxy.google.com Published On :: Wed, 15 Aug 2018 20:44:19 +0000 By Dan Ritzman OtherWords Alaska’s Arctic National Wildlife Refuge is one of the world’s last intact ecosystems, but dangerous oil exploration could soon spoil it. I can still remember the first time I saw tracks left behind by seismic testing … Continue reading → Full Article Points of View & Opinions alaska Arctic National Wildlife Refuge Drilling for Oil ecosystem U.S. Congress wildlife
w We Must Heed Storm Warnings to Build a Brighter Future By feedproxy.google.com Published On :: Fri, 21 Sep 2018 21:28:49 +0000 By David Suzuki with contributions from Senior Editor Ian Hanington David Suzuki Foundation In 2012, North Carolina’s Coastal Resources Commission warned that sea levels there could rise by a metre over the next century. The warning was based in part … Continue reading → Full Article Points of View & Opinions Climate Change forecasts Global Warming sea level rise
w After 30 Years Studying Climate, Scientist Declares: “I’ve Never Been as Worried as I Am Today” By feedproxy.google.com Published On :: Sat, 15 Dec 2018 00:13:19 +0000 By Jake Johnson Common Dreams And colleague says “global warming” no longer strong enough term. “Global heating is technically more correct because we are talking about changes in the energy balance of the planet.” Declaring that after three decades of … Continue reading → Full Article Points of View & Opinions Climate Change Global Warming global warming denial
w Why Is Going Green So Hard? Because Our System Isn’t By feedproxy.google.com Published On :: Wed, 24 Apr 2019 12:13:01 +0000 By Jill Richardson Other Words If environmental solutions aren’t systemic, living green will always mean going against the grain — and usually failing. Every year around Earth Day, I’m reminded of papers I graded in an environmental sociology class. The … Continue reading → Full Article Points of View & Opinions environmental consciousness going green government policy
w For Rachel Carson, wonder was a radical state of mind By feedproxy.google.com Published On :: Fri, 27 Sep 2019 18:33:25 +0000 By Jennifer Stitt Aeon In 1957, the world watched in wonder as the Soviet Union launched Sputnik 1, the first artificial satellite, into outer space. Despite Cold War anxieties, The New York Times admitted that space exploration ‘represented a step … Continue reading → Full Article ecoView ecological philosophy Ecology Heroes Rachel Carson Silent Spring
w Top 15 Digital Scrapbooking Downloads (Free & Paid) By justcreative.com Published On :: Mon, 27 Apr 2020 02:07:13 +0000 Scrapbooking can be a fun way to capture important moments in life and with our list of the Top 15 Scrapbooking Resources, you can start right away! Full Article Tools & Gear DesignCuts Scrapbooking
w 9 Ways To Start Promoting Your Content Now By justcreative.com Published On :: Tue, 28 Apr 2020 04:10:18 +0000 Your ability to create and promote content is critical to your business' success. Here are 9 ways to set up a framework for content promotion immediately. Full Article Blogging & Content Marketing Guest Articles Content Content Marketing Content Strategy
w How To Build a Website That Your Users Will Love By justcreative.com Published On :: Sat, 02 May 2020 03:35:24 +0000 Find out what users love and hate and how to build the best website for your audience. From content and navigation to design and hosting, use our 5 top tips. Full Article Guest Articles Web Design & UX UX
w [Podcast] How to Sell Brand Strategy By justcreative.com Published On :: Mon, 04 May 2020 04:56:55 +0000 Learn how to sell strategy... Jacob Cass & Matt Davies give different perspectives on how to approach sales & the brand building process. Tune in to episode 4! Full Article Podcast Brand Strategy Branding JUST Branding
w How to Master the Elevator Pitch & Leave a Great First Impression By justcreative.com Published On :: Mon, 04 May 2020 06:12:24 +0000 Want to master the elevator pitch and leave a great first impression? Use this easy formula to help communicate what you do in a concise pitch! Full Article Business Elevator Pitch
w How to Grow Your Sales and Leads During the Coronavirus Pandemic By justcreative.com Published On :: Wed, 06 May 2020 10:16:17 +0000 Try these 10 actionable steps for streamlined, cost-effective marketing during the lockdown. Shed costs and embrace innovation to drive leads and conversions. Full Article Blogging & Content Marketing Guest Articles Content Marketing Marketing
w Photography Tips: How To Create An Amazing Floating Image By icanbecreative.com Published On :: Tue, 03 Mar 2020 17:21:35 PST You can do everything today. There are certainly no limits to what the mind can achieve, and that includes floating. With simply manipulating layers using Photoshop, a floating image has never been... Full Article Learning
w Web Design & CRO – A Checklist for Designers By icanbecreative.com Published On :: Thu, 05 Mar 2020 12:35:50 PST Designing is often as much as a science as it is an art. Using specific knowledge of human psychology & online behaviour, the science of creating effective websites that are optimized for business... Full Article Learning
w How To Get Effective Help With Writing Tasks That Will Boost Your Own Writing Skills By icanbecreative.com Published On :: Tue, 10 Mar 2020 05:21:10 PDT Writing is a quite ambivalent word. For some students, it causes their worst nightmares to come to mind (or it is just a boring assignment) and for some, it’s the fun way to express their thoughts to... Full Article Review
w How Important Is A Domain Name For Your Business? By icanbecreative.com Published On :: Tue, 10 Mar 2020 16:41:03 PDT Online representation has a crucial role in planning a business. Today, people turn to the internet whenever they need help, but especially when they want to find certain products or specific... Full Article Business
w Creative Ways To Earn Extra Money In Your Downtime By icanbecreative.com Published On :: Wed, 11 Mar 2020 08:31:20 PDT Many people have regular jobs that they love, and which enable them to use their creative skills to make money. This could be anything from coding video games to being an expert in SEO or designing... Full Article Learning
w Vibrant Flat Vector Planets Illustration - Free Download Pack By icanbecreative.com Published On :: Wed, 11 Mar 2020 10:57:49 PDT The galaxy is a mesmerizing place, even better throught the eyes of visual design artists around our globe, we're delighted to release another freebie for our design community. This flat vector... Full Article Vector
w How The Neumorphism / Skeuomorphism UI Trend Is Getting Shape By icanbecreative.com Published On :: Fri, 13 Mar 2020 09:47:53 PDT The new UI trend known as Neumorphism (with Skeuomorphism roots) has gotten a more consistent shape in the last period, is another beautiful approach to design user interfaces that look soft and is... Full Article Design Roud-up
w Profession Of The Future: Why Is Programmer Education Still Relevant? By icanbecreative.com Published On :: Mon, 16 Mar 2020 08:07:37 PDT In 2020, there is no doubt that people and technology will be very close friends in the future. The modern inhabitant of our planet spends about 45% of his time connecting with technology. We are... Full Article Learning
w The Best Way To Improve Your Business Skills By icanbecreative.com Published On :: Mon, 16 Mar 2020 08:40:10 PDT Are you thinking about running a business after getting a degree? This article will help you find the best ways to make your business skills more efficient and useful. The Best Way To Improve Your... Full Article Business
w How A Web Design Business Can Benefit From Using Accounting Applications By icanbecreative.com Published On :: Wed, 18 Mar 2020 14:58:32 PDT Accounting applications help web design businesses in many ways. As a web design service provider, you should use them to boost your business. Start by browsing some resources online that provide... Full Article Business
w Which Graphics Editor To Choose For The Novice By icanbecreative.com Published On :: Thu, 19 Mar 2020 09:59:19 PDT Photos and other images are used in different fields, so those who know how to work with high-resolution mockups are in demand as professionals. It is useful to be able to take photos, draw, edit... Full Article Learning
w 5 Ways To Make Working From Home Easier By icanbecreative.com Published On :: Tue, 24 Mar 2020 13:44:03 PDT Working from home might sound like a fun and relaxing way to do your job, but many people who switch to working from home find it surprisingly difficult. In addition to finding the right tools, you... Full Article Learning
w Why Use A Digital Marketing Agency? By icanbecreative.com Published On :: Wed, 25 Mar 2020 18:38:23 PDT Outsourcing your marketing when you're running a small or medium sized business is often seen as an expensive option, one that can be done yourself. It might even be seen as something that's... Full Article Marketing
w What Are The Essential Tools For Painting? By icanbecreative.com Published On :: Thu, 26 Mar 2020 12:41:10 PDT Painting a room can be a scary venture. Once you have got chosen on the unused color for the room, you’re prepared to begin. Maler has prepared a list of necessary equipment you may need during... Full Article Learning
w Which Programming Language Should Mobile Developers Choose? By icanbecreative.com Published On :: Fri, 27 Mar 2020 08:11:50 PDT When building new apps, the most important thing developers must decide is which language to program in. There are several languages out there, and some are preferred for certain operating... Full Article Learning
w How To Restore Hard Drive From A Time Machine + Other Ways By icanbecreative.com Published On :: Sun, 29 Mar 2020 06:25:37 PDT Have you chosen Mac for its reliable system? They really have a lot of advantages and are of the best quality. Mac users don’t face serious problems with hard drives often. But the reality is such... Full Article Learning
w 5 Tips That You Absolutely Must Know To Design A Unique Metal Business Card By icanbecreative.com Published On :: Sat, 04 Apr 2020 04:15:51 PDT Every day thousands of business cards exchange hands, and these business cards often get lost in mounds of other cards. Often, clients are unable to reach you just because they couldn't find your... Full Article Design Roud-up
w How Can SEO Help Market Your Designing Agency? By icanbecreative.com Published On :: Sun, 12 Apr 2020 17:28:24 PDT It's unusual, as indeed Google says that in case you've got to enlist an SEO strategy, you ought to do so early instead of late, like when you're appropriate arranging to launch a new site. Because... Full Article SEO
w 6 Ways To Step Up Your Instagram Stories Game By icanbecreative.com Published On :: Wed, 15 Apr 2020 16:45:29 PDT Instagram Stories are an integral part of the platform. Though Instagram copied Snapchat’s concept a few years ago, over 500 million accounts use the Stories feature on a daily basis. Some users... Full Article Learning
w Why Choosing The Best Web Hosting Is Crucial For Your Business By icanbecreative.com Published On :: Wed, 15 Apr 2020 17:49:11 PDT Not many business owners think about hosting when building a new website for their business. But failing to choose the right web hosting can have a great impact on your website and, of course, your... Full Article Learning
w Online Logo Design Makers Will See Huge Growth In 2020 By icanbecreative.com Published On :: Fri, 17 Apr 2020 17:27:47 PDT At no other time in the history of the internet has it been easier to design your own logo than it is right now. You could say that the world of online logo design makers is in a perfect position to... Full Article Learning
w How To Create A Trustworthy Brand By icanbecreative.com Published On :: Sat, 25 Apr 2020 23:04:44 PDT The variables that determine business success are continually evolving. More than ever, customers want to be able to trust businesses with which they are transacting business. This involves building... Full Article Business
w Creative Marketing Strategies For Law Firms To Engage With Potential Clients By icanbecreative.com Published On :: Sun, 26 Apr 2020 15:20:57 PDT The success of any organization strongly depends on the marketing strategies they use to reach their potential customers. Law firms are no exception since they also operate in a competitive field... Full Article Marketing
w Where To Find Some Papers For Sale By icanbecreative.com Published On :: Wed, 06 May 2020 07:01:33 PDT If you look for a place to find academic papers for sale, you should know that there are lots of writing services on the Internet. But your task is to find a reliable online resource that would offer... Full Article Review
w What Stephen Hawking Taught Us About Living with Disability By feedproxy.google.com Published On :: Monday, March 19, 2018 - 9:16am Stephen Hawking, a world-renowned scientist who recently passed away, had a brilliant mind that was trapped inside a paralyzed body, and I could not stop thinking about how the opposite is often the case with traumatic brain injury. Full Article
w Never Stop Asking 'What If?' By feedproxy.google.com Published On :: Monday, July 16, 2018 - 6:26am We imagine the what-ifs as a worst case scenario, our worst nightmare happening to us, our life falling apart. But here’s another way of looking at it. Full Article
w To Love What Is: A Marriage Transformed By feedproxy.google.com Published On :: Monday, August 20, 2018 - 2:46pm I wish I had found Alix Kates Shulman’s memoir "To Love What Is: A Marriage Transformed" in the first month of my husband’s severe TBI, and yet I may not have absorbed it the way I did reading it fifteen years post-injury. Full Article
w Book Review: Love You Hard by Abby Maslin By feedproxy.google.com Published On :: Monday, January 21, 2019 - 8:33am This book packs a lot of wisdom. You’ll learn about aphasia; you’ll understand ambiguous loss; you’ll follow Abby down dark hallways and into sunlit rooms and learn what it means to own a life built on raw truth. Full Article
w Neural network generates convincing songs by famous singers By flowingdata.com Published On :: Thu, 30 Apr 2020 19:25:39 +0000 Jukebox from OpenAI is a generative model that makes music in the same…Tags: Jukebox, music, neural network, OpenAI Full Article Statistics Jukebox music neural network OpenAI
w Playable simulations to decide what happens next By flowingdata.com Published On :: Mon, 04 May 2020 07:21:03 +0000 The timelines keep shifting and people are getting antsy for many valid (and…Tags: coronavirus, Marcel Salathé, Nicky Case, simulation Full Article Infographics coronavirus Marcel Salathé Nicky Case simulation
w Remix and make music with audio from the Library of Congress By flowingdata.com Published On :: Wed, 06 May 2020 19:13:15 +0000 Brian Foo is the current Innovator-in-Residence at the Library of Congress. His latest…Tags: Brian Foo, Library of Congress, music Full Article Apps Brian Foo Library of Congress music
w Who should receive care first, an ethical dilemma By flowingdata.com Published On :: Thu, 07 May 2020 07:04:43 +0000 At greater disparities between low resources and high volumes of sick people, doctors…Tags: coronavirus, Feilding Cage, healthcare, policy, Reuters Full Article Infographics coronavirus Feilding Cage healthcare policy Reuters
w How to Foster Real-Time Client Engagement During Moderated Research By feedproxy.google.com Published On :: Mon, 17 Feb 2020 08:00:00 -0500 When we conduct moderated research, like user interviews or usability tests, for our clients, we encourage them to observe as many sessions as possible. We find when clients see us interview their users, and get real-time responses, they’re able to learn about the needs of their users in real-time and be more active participants in the process. One way we help clients feel engaged with the process during remote sessions is to establish a real-time communication backchannel that empowers clients to flag responses they’d like to dig into further and to share their ideas for follow-up questions. There are several benefits to establishing a communication backchannel for moderated sessions:Everyone on the team, including both internal and client team members, can be actively involved throughout the data collection process rather than waiting to passively consume findings.Team members can identify follow-up questions in real-time which allows the moderator to incorporate those questions during the current session, rather than just considering them for future sessions.Subject matter experts can identify more detailed and specific follow-up questions that the moderator may not think to ask.Even though the whole team is engaged, a single moderator still maintains control over the conversation which creates a consistent experience for the participant.If you’re interested in creating your own backchannel, here are some tips to make the process work smoothly:Use the chat tool that is already being used on the project. In most cases, we use a joint Slack workspace for the session backchannel but we’ve also used Microsoft Teams.Create a dedicated channel like #moderated-sessions. Conversation in this channel should be limited to backchannel discussions during sessions. This keeps the communication consolidated and makes it easier for the moderator to stay focused during the session.Keep communication limited. Channel participants should ask basic questions that are easy to consume quickly. Supplemental commentary and analysis should not take place in the dedicated channel.Use emoji responses. The moderator can add a quick thumbs up to indicate that they’ve seen a question.Introducing backchannels for communication during remote moderated sessions has been a beneficial change to our research process. It not only provides an easy way for clients to stay engaged during the data collection process but also increases the moderator’s ability to focus on the most important topics and to ask the most useful follow-up questions. Full Article Process Research
w African American Women Leading in Tech By feedproxy.google.com Published On :: Tue, 25 Feb 2020 08:05:00 -0500 “Close your eyes and name three people who have impacted the tech industry.”In all likelihood, that list might be overwhelmingly white and male. And you are not alone. Numerous lists online yielded the same results. In recent years, many articles have chronicled the dearth of diversity in tech. Studies have shown the ways in which venture capital firms have systematically underestimated and undervalued innovation coming particularly from women of color. In 2016 only 88 tech startups were led by African American women, in 2018 this number had climbed to a little over 200. Between 2009 and 2017, African American women raised $289MM in venture/angel funding. For perspective, this only represents .0006% of the $424.7B in total tech venture funding raised in that same time frame. In 2018, only 34 African American women had ever raised more than a million in venture funding. When it comes to innovation, it is not unusual for financial value to be the biggest predictor of what is considered innovative. In fact, a now largely controversial list posted by Forbes of America’s most innovative leaders in the fall of 2019 featured 99 men and one woman. Ironically, what was considered innovative was, in fact, very traditional in its presentation. The criteria used for the list was “media reputation for innovation,” social connections, a track record for value creation, and investor expectations for value creation. The majority of African American women-led startups raise $42,000 from largely informal networks. Criteria weighted on the side of ‘track record for value creation’ and ‘investor expectations for value creation’ devalues the immense contributions of African American women leading the charge on thoughtful and necessary tech. Had Forbes used criteria for innovation that recognized emergent leadership, novel problem-solving, or original thinking outside the circles of already well-known and well-established entrepreneurs we might have learned something new. Instead, we're basically reminded that "it takes money to make money."Meanwhile, African American women are the fastest-growing demographic of entrepreneurs in the United States. Their contributions to tech, amongst other fields, are cementing the importance of African American women in the innovation space. And they are doing this within and outside traditional tech frameworks. By becoming familiar with these entrepreneurs and their work, we can elevate their reputation and broaden our collective recognition of innovative leaders.In honor of black history month, we have compiled a list of African American women founders leading the way in tech innovation from Alabama to the Bay Area. From rethinking energy to debt forgiveness platforms these women are crossing boundaries in every field. Cultivating New Leaders Photo of Kathryn Finney, courtesy of Forbes.com. Kathryn Finney founder of DigitalundividedKathryn A. Finney is an American author, researcher, investor, entrepreneur, innovator and businesswoman. She is the founder and CEO of digitalundivided, a social enterprise that leads high potential Black and Latinx women founders through the startup pipeline from idea to exit.Laura Weidman Co-founder Code2040Laura Weidman Powers is the co-founder and executive director of Code2040, a nonprofit that creates access, awareness, and opportunities for minority engineering talent to ensure their leadership in the innovation economy.Angelica Ross founder of TransTech Social Enterprises Angelica Ross is an American businesswoman, actress, and transgender rights advocate. After becoming a self-taught computer coder, she went on to become the founder and CEO of TransTech Social Enterprises, a firm that helps employ transgender people in the tech industry.Christina Souffrant Ntim co-founder of Global Startup EcosystemChristina Souffrant Ntim is the co-founder of award-winning digital accelerator platform – Global Startup Ecosystem which graduates over 1000+ companies across 90+ countries a year.Media and EntertainmentBryanda Law founder of QuirktasticBryanda Law is the founder of Quirktastic, a modern media-tech company on a mission to grow the largest and most authentically engaged community of fandom-loving people of color.Morgan Debaun founder of Blavity Inc. Morgan DeBaun is an African American entrepreneur. She is the Founder and CEO of Blavity Inc., a portfolio of brands and websites created by and for black millennialsCheryl Contee co-founder of Do Big ThingsCheryl Contee is the award-winning CEO and co-founder of Do Big Things, a digital agency that creates new narratives and tech for a new era focused on causes and campaigns. Photo of Farah Allen, courtesy of The Source Magazine. Farah Allen founder of The Labz Farah Allen is the CEO and founder of The Labz, a collaborative workspace that provides automated tracking, rights management, protection—using Blockchain technology—of your music files during and after you create them.Health/Wellness Mara Lidey co-founder of Shine Marah Lidey is the co-founder & co-CEO of Shine. Shine aims to reinvent health and wellness for millennials through messaging technology.Alicia Thomas co-founder of Dibs Alicia Thomas is the founder and CEO of Dibs, a B2B digital platform that gives studios quick and easy access to real-time pricing for fitness classes. Photo of Erica Plybeah, courtesy of BetterTennessee.com Erica Plybeah Hemphill founder of MedHaul Erica Plybeah Hemphill is the founder of MedHaul. MedHaul offers cloud-based solutions that ease the burdens of managing patient transportation.Star Cunningham founder of 4D HealthwareStar Cunningham is the founder and CEO of 4D Healthware. 4D Healthware is patient engagement software that makes personalized medicine possible through connected data.Kimberly Wilson founder of HUEDKimberly Wilson is the founder of HUED. HUED is a healthcare technology startup that helps patients find and book appointments with Black and Latinx healthcare providers. Financial Viola Llewellyn co-founder of Ovamba SolutionsViola Llewellyn is the co-founder and the president of Ovamba Solutions, a US-based fintech company that provides micro, small, and medium enterprises in Africa and the Middle East with microfinance through a mobile platform.NanaEfua Baidoo Afoh-Manin, Briana DeCuir and Joanne Moreau founders of Shared Harvest FundNanaEfua, Briana and Joanne are the founders of Shared Harvest Fund. Shared Harvest Fund provides real opportunities for talented people to volunteer away their student loans. Photo of Sheena Allen, courtesy of People of Color in Tech. Sheena Allen founder of CapWaySheena Allen is best known as the founder and CEO of fintech company and mobile bank CapWay. Education Helen Adeosun co-founder of CareAcademyHelen Adeosun is the co-founder, president and CEO of CareAcademy, a start-up dedicated to professionalizing caregiving through online classes. CareAcademy brings professional development to caregivers at all levels. Alexandra Bernadotte founder of Beyond 12Alex Bernadotte is the founder and chief executive officer of Beyond 12, a nonprofit that integrates personalized coaching with intelligent technology to increase the number of traditionally underserved students who earn a college degree.Shani Dowell founder of PossipShani Dowell is the founder of Possip, a platform that simplifies feedback between parents, schools and districts. Learn more at possipit.com. Kaya Thomas of We Read TooKaya Thomas is an American computer scientist, app developer and writer. She is the creator of We Read Too, an iOS app that helps readers discover books for and by people of color.Kimberly Gray founder of Uvii Kimberly Gray is the founder of Uvii. Uvii helps students to communicate and collaborate on mobile with video, audio, and textNicole Neal co-founder of ProcureK12 by Noodle MarketsNicole Neal is the co-founder and CEO of ProcureK12 by Noodle Markets. ProcureK12 makes purchasing for education simple. They combine a competitive school supply marketplace with quote request tools and bid management.Beauty/Fashion/Consumer goodsRegina Gwyn founder of TresseNoireRegina Gwynn is the co-founder & CEO of TresseNoire, the leading on-location beauty booking app designed for women of color in New York City and Philadelphia.Camille Hearst co-founder of Kit.Camille Hearst is the CEO and co-founder of Kit. Kit lets experts create shoppable collections of products so their followers can buy and the experts can make some revenue from what they share. Photo of Esosa Ighodaro courtesy of Under30CEO. Esosa Ighodaro co-founder of CoSign Inc. Esosa Ighodaro is the co-founder of CoSign Inc., which was founded in 2013. CoSign is a mobile application that transfers social media content into commerce giving cash for endorsing and cosigning products and merchandise like clothing, home goods, technology and more.EnvironmentJessica Matthews founder of Uncharted PowerJessica O. Matthews is a Nigerian-American inventor, CEO and venture capitalist. She is the co-founder of Uncharted Power, which made Soccket, a soccer ball that can be used as a power generator.Etosha Cave co-founder of Opus 12 Etosha R. Cave is an American mechanical engineer based in Berkeley, California. She is the Co-Founder and Chief Scientific Officer of Opus 12, a startup that recycles carbon dioxide.Kellee James founder of Mercaris, Inc. Kellee James is the founder and CEO of Mercaris, Inc., a growing, minority-led start-up that makes efficient trading of organic and non-GMO commodities possible via market data service exchanges and trading platforms.Workplace Photo of Lisa Skeete Tatum courtesy of The Philadelphia Citezen. Lisa Skeete Tatum founder of LanditLisa Skeete Tatum is the founder and CEO of Landit, a technology platform created to increase the success and engagement of women in the workplace, and to enable companies to attract, develop, and retain high-potential, diverse talent.Netta Jenkins and Jacinta Mathis founders of Dipper Netta Jenkins and Jacinta Mathis are founders of Dipper, a platform that acts as a safe digital space for individuals of color in the workplace.Sherisse Hawkins founder of Pagedip Sherisse Hawkins is the visionary and founder of Pagedip. Pagedip is a cloud-based software solution that allows you to bring depth to digital documents, enabling people to read (text), watch (video) and do (interact) all in the same place without ever having to leave the page.Thkisha DeDe Sanogo founder of MyTAASKThkisha DeDe Sanogo is the founder of MyTAASK. MyTAASK is a personal planning platform dedicated to getting stuff done in real-time.Home Photo of Jean Brownhill, courtesy of Quartz at Work. Jean Brownhill founder of Sweeten Jean Brownhill is the founder and CEO of Sweeten, an award-winning service that helps homeowners and business owners find and manage the best vetted general contractors for major renovation projects.Reham Fagiri co-founder of AptDecoReham Fagiri is the co-founder of AptDeco. AptDeco is an online marketplace for buying and selling quality preowned furniture with pick up and delivery built into the service.Stephanie Cummings founder of Please Assist Me Stephanie Cummings is the founder and CEO of Please Assist me. Please Assist Me is an apartment task service in Nashville, TN. The organization empowers working professionals by allowing them to outsource their weekly chores to their own personal team.Law Kristina Jones co-founder of Court BuddyKristina Jones is the co-founder of Court Buddy, a service that matches clients with lawyers.Sonja Ebron and Debra Slone founders of Courtroom5Sonja Ebron and Debra Slone are the founders of Courtroom5. Courtroom5 helps you represent yourself in court with tools, training, and community designed for pro se litigants.Crowdfunding Zuley Clarke founder of Business Gift RegistryZuley Clarke is the founder of Business Gift Registry, a crowdfunding platform that lets friends and family support an entrepreneur through gift-giving just like they would support a couple for a wedding. Full Article News & Culture
w Markdown Comes Alive! Part 1, Basic Editor By feedproxy.google.com Published On :: Wed, 26 Feb 2020 08:00:00 -0500 In my last post, I covered what LiveView is at a high level. In this series, we’re going to dive deeper and implement a LiveView powered Markdown editor called Frampton. This series assumes you have some familiarity with Phoenix and Elixir, including having them set up locally. Check out Elizabeth’s three-part series on getting started with Phoenix for a refresher. This series has a companion repository published on GitHub. Get started by cloning it down and switching to the starter branch. You can see the completed application on master. Our goal today is to make a Markdown editor, which allows a user to enter Markdown text on a page and see it rendered as HTML next to it in real-time. We’ll make use of LiveView for the interaction and the Earmark package for rendering Markdown. The starter branch provides some styles and installs LiveView. Rendering Markdown Let’s set aside the LiveView portion and start with our data structures and the functions that operate on them. To begin, a Post will have a body, which holds the rendered HTML string, and title. A string of markdown can be turned into HTML by calling Post.render(post, markdown). I think that just about covers it! First, let’s define our struct in lib/frampton/post.ex: defmodule Frampton.Post do defstruct body: "", title: "" def render(%__MODULE{} = post, markdown) do # Fill me in! end end Now the failing test (in test/frampton/post_test.exs): describe "render/2" do test "returns our post with the body set" do markdown = "# Hello world!" assert Post.render(%Post{}, markdown) == {:ok, %Post{body: "<h1>Hello World</h1> "}} end end Our render method will just be a wrapper around Earmark.as_html!/2 that puts the result into the body of the post. Add {:earmark, "~> 1.4.3"} to your deps in mix.exs, run mix deps.get and fill out render function: def render(%__MODULE{} = post, markdown) do html = Earmark.as_html!(markdown) {:ok, Map.put(post, :body, html)} end Our test should now pass, and we can render posts! [Note: we’re using the as_html! method, which prints error messages instead of passing them back to the user. A smarter version of this would handle any errors and show them to the user. I leave that as an exercise for the reader…] Time to play around with this in an IEx prompt (run iex -S mix in your terminal): iex(1)> alias Frampton.Post Frampton.Post iex(2)> post = %Post{} %Frampton.Post{body: "", title: ""} iex(3)> {:ok, updated_post} = Post.render(post, "# Hello world!") {:ok, %Frampton.Post{body: "<h1>Hello world!</h1> ", title: ""}} iex(4)> updated_post %Frampton.Post{body: "<h1>Hello world!</h1> ", title: ""} Great! That’s exactly what we’d expect. You can find the final code for this in the render_post branch. LiveView Editor Now for the fun part: Editing this live! First, we’ll need a route for the editor to live at: /editor sounds good to me. LiveViews can be rendered from a controller, or directly in the router. We don’t have any initial state, so let's go straight from a router. First, let's put up a minimal test. In test/frampton_web/live/editor_live_test.exs: defmodule FramptonWeb.EditorLiveTest do use FramptonWeb.ConnCase import Phoenix.LiveViewTest test "the editor renders" do conn = get(build_conn(), "/editor") assert html_response(conn, 200) =~ "data-test="editor"" end end This test doesn’t do much yet, but notice that it isn’t live view specific. Our first render is just the same as any other controller test we’d write. The page’s content is there right from the beginning, without the need to parse JavaScript or make API calls back to the server. Nice. To make that test pass, add a route to lib/frampton_web/router.ex. First, we import the LiveView code, then we render our Editor: import Phoenix.LiveView.Router # … Code skipped ... # Inside of `scope "/"`: live "/editor", EditorLive Now place a minimal EditorLive module, in lib/frampton_web/live/editor_live.ex: defmodule FramptonWeb.EditorLive do use Phoenix.LiveView def render(assigns) do ~L""" <div data-test=”editor”> <h1>Hello world!</h1> </div> """ end def mount(_params, _session, socket) do {:ok, socket} end end And we have a passing test suite! The ~L sigil designates that LiveView should track changes to the content inside. We could keep all of our markup in this render/1 method, but let’s break it out into its own template for demonstration purposes. Move the contents of render into lib/frampton_web/templates/editor/show.html.leex, and replace EditorLive.render/1 with this one liner: def render(assigns), do: FramptonWeb.EditorView.render("show.html", assigns). And finally, make an EditorView module in lib/frampton_web/views/editor_view.ex: defmodule FramptonWeb.EditorView do use FramptonWeb, :view import Phoenix.LiveView end Our test should now be passing, and we’ve got a nicely separated out template, view and “live” server. We can keep markup in the template, helper functions in the view, and reactive code on the server. Now let’s move forward to actually render some posts! Handling User Input We’ve got four tasks to accomplish before we are done: Take markdown input from the textarea Send that input to the LiveServer Turn that raw markdown into HTML Return the rendered HTML to the page. Event binding To start with, we need to annotate our textarea with an event binding. This tells the liveview.js framework to forward DOM events to the server, using our liveview channel. Open up lib/frampton_web/templates/editor/show.html.leex and annotate our textarea: <textarea phx-keyup="render_post"></textarea> This names the event (render_post) and sends it on each keyup. Let’s crack open our web inspector and look at the web socket traffic. Using Chrome, open the developer tools, navigate to the network tab and click WS. In development you’ll see two socket connections: one is Phoenix LiveReload, which polls your filesystem and reloads pages appropriately. The second one is our LiveView connection. If you let it sit for a while, you’ll see that it's emitting a “heartbeat” call. If your server is running, you’ll see that it responds with an “ok” message. This lets LiveView clients know when they've lost connection to the server and respond appropriately. Now, type some text and watch as it sends down each keystroke. However, you’ll also notice that the server responds with a “phx_error” message and wipes out our entered text. That's because our server doesn’t know how to handle the event yet and is throwing an error. Let's fix that next. Event handling We’ll catch the event in our EditorLive module. The LiveView behavior defines a handle_event/3 callback that we need to implement. Open up lib/frampton_web/live/editor_live.ex and key in a basic implementation that lets us catch events: def handle_event("render_post", params, socket) do IO.inspect(params) {:noreply, socket} end The first argument is the name we gave to our event in the template, the second is the data from that event, and finally the socket we’re currently talking through. Give it a try, typing in a few characters. Look at your running server and you should see a stream of events that look something like this: There’s our keystrokes! Next, let’s pull out that value and use it to render HTML. Rendering Markdown Lets adjust our handle_event to pattern match out the value of the textarea: def handle_event("render_post", %{"value" => raw}, socket) do Now that we’ve got the raw markdown string, turning it into HTML is easy thanks to the work we did earlier in our Post module. Fill out the body of the function like this: {:ok, post} = Post.render(%Post{}, raw) IO.inspect(post) If you type into the textarea you should see output that looks something like this: Perfect! Lastly, it’s time to send that rendered html back to the page. Returning HTML to the page In a LiveView template, we can identify bits of dynamic data that will change over time. When they change, LiveView will compare what has changed and send over a diff. In our case, the dynamic content is the post body. Open up show.html.leex again and modify it like so: <div class="rendered-output"> <%= @post.body %> </div> Refresh the page and see: Whoops! The @post variable will only be available after we put it into the socket’s assigns. Let’s initialize it with a blank post. Open editor_live.ex and modify our mount/3 function: def mount(_params, _session, socket) do post = %Post{} {:ok, assign(socket, post: post)} end In the future, we could retrieve this from some kind of storage, but for now, let's just create a new one each time the page refreshes. Finally, we need to update the Post struct with user input. Update our event handler like this: def handle_event("render_post", %{"value" => raw}, %{assigns: %{post: post}} = socket) do {:ok, post} = Post.render(post, raw) {:noreply, assign(socket, post: post) end Let's load up http://localhost:4000/editor and see it in action. Nope, that's not quite right! Phoenix won’t render this as HTML because it’s unsafe user input. We can get around this (very good and useful) security feature by wrapping our content in a raw/1 call. We don’t have a database and user processes are isolated from each other by Elixir. The worst thing a malicious user could do would be crash their own session, which doesn’t bother me one bit. Check the edit_posts branch for the final version. Conclusion That’s a good place to stop for today. We’ve accomplished a lot! We’ve got a dynamically rendering editor that takes user input, processes it and updates the page. And we haven’t written any JavaScript, which means we don’t have to maintain or update any JavaScript. Our server code is built on the rock-solid foundation of the BEAM virtual machine, giving us a great deal of confidence in its reliability and resilience. In the next post, we’ll tackle making a shared editor, allowing multiple users to edit the same post. This project will highlight Elixir’s concurrency capabilities and demonstrate how LiveView builds on them to enable some incredible user experiences. Full Article Code Back-end Engineering
w Why's it so hard to get the cool stuff approved? By feedproxy.google.com Published On :: Thu, 27 Feb 2020 00:00:00 -0500 The classic adage is “good design speaks for itself.” Which would mean that if something’s as good of an idea as you think it is, a client will instantly see that it’s good too, right? Here at Viget, we’re always working with new and different clients. Each with their own challenges and sensibilities. But after ten years of client work, I can’t help but notice a pattern emerge when we’re trying to get approval on especially cool, unconventional parts of a design. So let’s break down some of those patterns to hopefully better understand why clients hesitate, and what strategies we’ve been using lately to help get the work we’re excited about approved.Imagine this: the parallax homepage with elements that move around in surprising ways or a unique navigation menu that conceptually reinforces a site’s message. The way the content cards on a page will, like, be literal cards that will shuffle and move around. Basically, any design that feels like an exciting, novel challenge, will need the client to “get it.” And that often turns out to be the biggest challenge of all. There are plenty of practical reasons cool designs get shot down. A client is usually more than one stakeholder, and more than the team of people you’re working with directly. On any project, there’s an amount of telephone you end up playing. Or, there’s always the classic foes: budgets and deadlines. Any idea should fit in those predetermined constraints. But as a project goes along, budgets and deadlines find a way to get tighter than you planned. But innovative designs and interactions can seem especially scary for clients to approve. There’s three fears that often pop up on projects:The fear of change. Maybe the client expected something simple, a light refresh. Something that doesn’t challenge their design expectations or require more time and effort to understand. And on our side, maybe we didn’t sufficiently ease them into our way of thinking and open them up to why we think something bigger and bolder is the right solution for them. Baby steps, y’all. The fear of the unknown. Or, less dramatically, a lack of understanding of the medium. In the past, we have struggled with how to present an interactive, animated design to a client before it’s actually built. Looking at a site that does something conceptually similar as an example can be tough. It’s asking a lot of a client’s imagination to show them a site about boots that has a cool spinning animation and get meaningful feedback about how a spinning animation would work on their site about after-school tutoring. Or maybe we’ve created static designs, then talked around what we envision happening. Again, what seems so clear in our minds as professionals entrenched in this stuff every day can be tough for someone outside the tech world to clearly understand. The fear of losing control. We’re all about learning from past mistakes. So lets say, after dealing with that fear of the unknown on a project, next time you go in the opposite direction. You invest time up front creating something polished. Maybe you even get the developer to build a prototype that moves and looks like the real thing. You’ve taken all the vague mystery out of the process, so a client will be thrilled, right? Surprise, probably not! Most clients are working with you because they want to conquer the noble quest that is their redesign together. When we jump straight to showing something that looks polished, even if it’s not really, it can feel like we jumped ahead without keeping them involved. Like we took away their input. They can also feel demotivated to give good, meaningful feedback on a polished prototype because it looks “done.”So what to do? Lately we have found low-fidelity prototypes to be a great tool for combating these fears and better communicating our ideas. What are low-fidelity prototypes?Low fidelity prototypes are a tool that designers can create quickly to illustrate an idea, without sinking time into making it pixel-perfect. Some recent examples of prototypes we've created include a clickable Figma or Invision prototype put together with Whimsical wireframes: A rough animation created in Principle illustrating less programatic animation: And even creating an animated storyboard in Photoshop: They’re rough enough that there’s no way they could be confused for a final product. But customized so that a client can immediately understand what they’re looking at and what they need to respond to. Low-fidelity prototypes hit a sweet spot that addresses those client fears head on. That fear of change? A lo-fi prototype starts rough and small, so it can ease a client into a dramatic change without overwhelming them. It’s just a first step. It gives them time to react and warm up to something that’ll ultimately be a big change.It also cuts out the fear of the unknown. Seeing something moving around, even if it’s rough, can be so much more clear than talking ourselves in circles about how we think it will move, and hoping the client can imagine it. The feature is no longer an enigma cloaked in mystery and big talk, but something tangible they can point at and ask concrete questions about.And finally, a lo-fi prototype doesn’t threaten a client’s sense of control. Low-fidelity means it’s clearly still a work in progress! It’s just an early step in the creative process, and therefore communicates that we’re still in the middle of that process together. There’s still plenty of room for their ideas and feedback. Lo-fi prototypes: client-tested, internal team-approvedThere are a lot of reasons to love lo-fi prototypes internally, too! They’re quick and easy. We can whip up multiple ideas within a few hours, without sinking the time into getting our hearts set on any one thing. In an agency setting especially, time is limited, so the faster we can get an idea out of our own heads, the better.They’re great to share with developers. Ideally, the whole team is working together simultaneously, collaborating every step of the way. Realistically, a developer often doesn’t have time during a project’s early design phase. Lo-fi prototypes are concrete enough that a developer can quickly tell if building an idea will be within scope. It helps us catch impractical ideas early and helps us all collaborate to create something that’s both cool and feasible. Stay tuned for posts in the near future diving into some of our favorite processes for creating lo-fi prototypes! Full Article Design & Content
w 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