<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: The Holistic Technologist 👩🏻‍💻</title>
    <description>The latest articles on DEV Community by The Holistic Technologist 👩🏻‍💻 (@holistictechnologist).</description>
    <link>https://dev.to/holistictechnologist</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F857125%2F6fdb93f2-86eb-46b8-9e4c-d4277fdd3478.jpg</url>
      <title>DEV Community: The Holistic Technologist 👩🏻‍💻</title>
      <link>https://dev.to/holistictechnologist</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/holistictechnologist"/>
    <language>en</language>
    <item>
      <title>Building Community Resource Web-Apps with Google Maps API</title>
      <dc:creator>The Holistic Technologist 👩🏻‍💻</dc:creator>
      <pubDate>Thu, 09 Jun 2022 21:50:53 +0000</pubDate>
      <link>https://dev.to/holistictechnologist/building-community-resource-web-apps-with-google-maps-api-1plj</link>
      <guid>https://dev.to/holistictechnologist/building-community-resource-web-apps-with-google-maps-api-1plj</guid>
      <description>&lt;h2&gt;
  
  
  Hello beautiful people!
&lt;/h2&gt;

&lt;p&gt;In this post, I’ll be giving an overview on utilizing Google Cloud’s location services APIs to build a web-app that enables users to find resources near them.&lt;/p&gt;

&lt;p&gt;Since the pandemic, there has been a lot more emphasis on what has always been true for people of color- our communities keep us safe. Community rallies when we need support, mutual aid, and care. I’ve noticed Google docs, static web-pages, and other forms of resource sharing platforms pop up as a result of more people seeking a variety of services. &lt;/p&gt;

&lt;p&gt;For something like a national database or communities with different types of resources, using Google Cloud APIs can create a more dynamic way of creating, querying, and displaying data. &lt;/p&gt;

&lt;p&gt;  &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gUXLG0QQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/93cieoq8llbcu3wzij8r.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gUXLG0QQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/93cieoq8llbcu3wzij8r.gif" alt="Image description" width="600" height="333"&gt;&lt;/a&gt;&lt;br&gt;
📌 Description of app: users can enter their location and see resources in their area / within a specified radius pinned on a map. They can click on each pin to view the resource and also filter by resource type / categories.&lt;/p&gt;

&lt;p&gt;   &lt;/p&gt;
&lt;h2&gt;
  
  
  Building with the MERN Stack
&lt;/h2&gt;

&lt;p&gt;The project uses the MERN stack: a web development framework made up of the stack of MongoDB, Express.js, React.js, and Nodejs.&lt;/p&gt;

&lt;p&gt;For the main purpose of this blog, I will be only covering the Google APIs and what they do. I realized in the middle of making this tutorial it’s way too long to code along so I will be breaking up the code’s main functionalities further in the coming weeks!&lt;em&gt;*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;   &lt;/p&gt;
&lt;h2&gt;
  
  
  Google Cloud APIs &amp;amp; What They Do
&lt;/h2&gt;

&lt;p&gt;  &lt;br&gt;
&lt;strong&gt;Places API&lt;/strong&gt;&lt;br&gt;
This API autocompletes addresses in an input so users are able to select their location, if it is within Google’s Places library. This is helpful in ensuring we have the correct, formatted address we need to query the next API and it’s an easy way for users to input their information!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SEL3T7I4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89l4qjwu3i687n7dnjq8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SEL3T7I4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89l4qjwu3i687n7dnjq8.png" alt="Image description" width="880" height="413"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Input provides suggestions and auto completes the option that users select&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;  &lt;br&gt;
&lt;strong&gt;Geocode API&lt;/strong&gt;&lt;br&gt;
This API converts addresses into coordinates, and vice versa. This is used in the code when the user inputs their location and also when you post a resource, so that we are able to check if the coordinates are within a specified range of one another. &lt;/p&gt;

&lt;p&gt;📌 The great thing about building with the MERN stack is that there are node modules we can use that make it easy to implement these APIs. I was able to quickly convert the user’s location into coordinates by importing “react-geocode” and using its built-in methods.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//import component
import Geocode from "react-geocode";

//set API key
Geocode.setApiKey(process.env.REACT_APP_GOOGLE_API_KEY);

//convert from address(userLocation) to coordinates (userCoords)
Geocode.fromAddress(userLocation).then((res) =&amp;gt; {
      let userCoords = res.results[0].geometry.location;
      setCoordinates(userCoords);
    });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;  &lt;br&gt;
&lt;strong&gt;Maps JavaScript API&lt;/strong&gt;&lt;br&gt;
This API displays a Google Map with “Markers” pinned, using the resource’s coordinates. “InfoWindows” display information when users click on the Markers. Map, Markers, and InfoWindow components are imported from google-maps-react npm package.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0a4YedUv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qonijh25dkyd2mrde4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0a4YedUv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qonijh25dkyd2mrde4j.png" alt="Image description" width="880" height="510"&gt;&lt;/a&gt;&lt;br&gt;
Note: Resources that are within the user’s radius are calculated through a separate algorithm, not built-in to Google Maps.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you sign up for a Google Developer account, you will receive $300 of developer credits for 90 days, which is plenty of time to test your app! You will not be charged and your app will not make API calls once your trial runs out.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;   &lt;/p&gt;

&lt;h2&gt;
  
  
  Why is this important?
&lt;/h2&gt;

&lt;p&gt;While this is only the first step in providing someone with resources and care, there are plenty of other use cases utilizing this as a template / base. With more developers utilizing larger platforms- there’s hope that technology will be built with us, for us. Can’t wait to see what you dream up! &lt;/p&gt;

&lt;p&gt;Happy coding 👾 &lt;/p&gt;

&lt;p&gt;Ellie&lt;/p&gt;




&lt;p&gt;I would like to take a moment to thank organizers, specifically Black women / femmes / gender non-conforming folks. Our collective liberation deeply tied to the work that you do and the ways you show up. Thank you. May you be protected and safe. May the burden of teaching and emotional labor not fall entirely on you. Wishing you rest and ease. Wishing you softness.&lt;/p&gt;




&lt;p&gt;You can view the code here if you’d like to start building: &lt;a href="https://github.com/holistictech/community-apps-with-google-cloud-api"&gt;codebase on Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more instructions on setting up, please visit the &lt;a href="https://holistictech.io/blog/posts/building-community-resource-web-applications-with-google-maps-api"&gt;blog post hosted on my website&lt;/a&gt;. &lt;/p&gt;

</description>
      <category>mern</category>
      <category>googlecloud</category>
      <category>javascript</category>
      <category>community</category>
    </item>
    <item>
      <title>Pseudocode Like a Badass: Breaking Down Problems and Figuring Out What They’re Asking For</title>
      <dc:creator>The Holistic Technologist 👩🏻‍💻</dc:creator>
      <pubDate>Tue, 03 May 2022 17:19:44 +0000</pubDate>
      <link>https://dev.to/holistictechnologist/pseudocode-like-a-badass-breaking-down-problems-and-figuring-out-what-theyre-asking-for-3edf</link>
      <guid>https://dev.to/holistictechnologist/pseudocode-like-a-badass-breaking-down-problems-and-figuring-out-what-theyre-asking-for-3edf</guid>
      <description>&lt;h2&gt;
  
  
  Hello beautiful people!
&lt;/h2&gt;

&lt;p&gt;In this post I’ll share some tips on breaking down coding challenges using pseudocode*. It also includes a video of me working through a newbie-friendly coding challenge on Codewars!&lt;/p&gt;

&lt;p&gt;As someone who has worked with over 100 emerging software engineers, one of the common blockers I’ve seen is that folks get paralyzed when initially presented with a coding challenge or project. They believe that they don’t know how to solve the problem or the task feels too big. I remind them that they don’t have to climb the whole mountain, just try to take the next step.&lt;/p&gt;

&lt;p&gt;My approach to strengthening this skill is centered around communication. Language is not only a way to express what we think or feel, but also can be a tool for shaping the way we relate to what we’re doing and to develop patterns in our learning. Asking yourself an excessive amount of questions can help you get better at &lt;strong&gt;asking the right questions, to lead to the right answers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WAYppqPg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8mn0r9e0rus2hhsceefy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WAYppqPg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8mn0r9e0rus2hhsceefy.jpeg" alt="Image description" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I highly recommend &lt;strong&gt;TALKING OUT LOUD&lt;/strong&gt; through this process- whether its to yourself, rubber duck, or another dev. Programming is very similar to learning a new language. It’s one thing to study but fluency comes from having conversations, exchanging ideas, and figuring out how to communicate our ideas better.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Pseudocode is a plain description of the steps in a coding problem or algorithm.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Using P.R.E.P to Dissect Coding Challenges
&lt;/h2&gt;

&lt;p&gt;The objectives of pseudocode are: to get your mind to think about a problem in layman’s terms, lay a foundation to build your code on, and get past the initial fear of starting. I ask myself questions and write down every single thought or idea I have relating to the problem- to begin with what I know. Take what resonates. 😃  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Examples will be in Javascript&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;📍 One method we introduce to our students at &lt;a href="https://resilientcoders.org"&gt;Resilient Coders&lt;/a&gt; is: &lt;strong&gt;P.R.E.P&lt;/strong&gt;, which stands for &lt;strong&gt;P&lt;/strong&gt;arameters, &lt;strong&gt;R&lt;/strong&gt;eturn, &lt;strong&gt;E&lt;/strong&gt;xamples, and &lt;strong&gt;P&lt;/strong&gt;seudocode.&lt;/p&gt;

&lt;p&gt;Below is a set of questions I’ll start with when solving a coding challenge:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parameters: What are the parameters of the function?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What data type(s) are they?&lt;/li&gt;
&lt;li&gt;What are the constraints?&lt;/li&gt;
&lt;li&gt;How will I be working with those parameters / what do I need to do with them?&lt;/li&gt;
&lt;li&gt;if numbers: will most likely have to do some kind of operation&lt;/li&gt;
&lt;li&gt;if arrays: loop through them&lt;/li&gt;
&lt;li&gt;if objects: work with key:value pairs or its properties&lt;/li&gt;
&lt;li&gt;I sometimes will think about edge cases here as well such as empty parameters, special characters, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Return: What will the function return?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Will I mutate the parameter and return it or return a something new?&lt;/li&gt;
&lt;li&gt;💡 use clues from the problem i.e ‘return a new array of even numbers’&lt;/li&gt;
&lt;li&gt;it may be helpful to store the return in a new variable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Examples: Understanding the expected return&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding challenges will often provide an example but it would be helpful to create 2-3 examples of your own to think through the parameters and returns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4JzmbIFV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lwpmhtvjvzl76ayx4o6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4JzmbIFV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lwpmhtvjvzl76ayx4o6.png" alt="Image description" width="472" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pseudocode: Steps to code&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is where I’ll try to create a step by step guide to solve the problem, starting with what I know.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Write a function&lt;/li&gt;
&lt;li&gt;Declare a variable&lt;/li&gt;
&lt;li&gt;Loop through the array&lt;/li&gt;
&lt;li&gt;If the element is... (write conditional statements)&lt;/li&gt;
&lt;li&gt;Return x variable&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Look for action words in the the problem to break up the sentences and use that as your guide. &lt;em&gt;i.e “take the array”, “if it is”, “then do this” = 3 smaller steps to take rather than ONE big step&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Look for keywords in the problem to give you clues on what methods to use &lt;em&gt;i.e  “filter” or “new array” to me indicate I may have to use Array.filter() or Array.map(), respectively&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;side plug: check out my &lt;a href="https://github.com/holistictech/notes/blob/master/array-methods-cheatsheet.js"&gt;array methods cheatsheet&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;From there, it’s a process of asking “what’s next?” over and over again. After this step, what do you want to happen? It’s not important how many steps there are left or if the steps aren’t linear. We’re trying to create a blueprint and get as specific as possible. The more you can clearly communicate your issue or blocker, hopefully it will be easier to Google or ask for help when you’re stuck!&lt;/p&gt;

&lt;h2&gt;
  
  
  Pseudocode in Action
&lt;/h2&gt;

&lt;p&gt;📍 Here is a video of how I use P.R.E.P to solve this &lt;a href="https://www.codewars.com/kata/5a4b16435f08299c7000274f"&gt;codewar&lt;/a&gt;: &lt;code&gt;Complete the function that takes a list of numbers (nums), as the only argument to the function. Take each number in the list and square it if it is even, or square root the number if it is odd. Take this new list and return the sum of it, rounded to two decimal places.&lt;/code&gt;&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://ellidelaluna.wistia.com/medias/bi2jbp80qt" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--eW5xSnr---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://embed.wistia.com/deliveries/4a0ccd400e0f0b6fc986fb133921ad47.jpg" height="550" class="m-0" width="880"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://ellidelaluna.wistia.com/medias/bi2jbp80qt" rel="noopener noreferrer" class="c-link"&gt;
          Pseudocoding a Coding Challenge Using P.R.E.P - ellidelaluna
        &lt;/a&gt;
      &lt;/h2&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Md8D3Qup--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ellidelaluna.wistia.com/favicon.ico" width="32" height="32"&gt;
        ellidelaluna.wistia.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;While I don’t believe that coding challenges during technical interviews are reflective of what someone has to offer in a SWE role, I do think they’re helpful while learning how to code and implementing larger concepts. &lt;/p&gt;

&lt;p&gt;Sometimes the next steps won’t make sense or come to you until you start writing code- and that’s just part of the process! As you continue to practice breaking down problems, I hope you’ll find the questions and systems that work best for you.&lt;/p&gt;

&lt;p&gt;Tune in next time for tips on architecting single projects and applications!&lt;/p&gt;

&lt;p&gt;Happy coding 👾 &lt;/p&gt;

&lt;p&gt;Ellie&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>codenewbie</category>
      <category>codewars</category>
    </item>
  </channel>
</rss>
