<?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: 👩‍💻Tracy A King</title>
    <description>The latest articles on DEV Community by 👩‍💻Tracy A King (@stacktracy).</description>
    <link>https://dev.to/stacktracy</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%2F20318%2F4b48d476-0ba6-4b74-80fa-2eabb9a799e0.jpg</url>
      <title>DEV Community: 👩‍💻Tracy A King</title>
      <link>https://dev.to/stacktracy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stacktracy"/>
    <language>en</language>
    <item>
      <title>10 Things You Can Do To Support Black People in Tech</title>
      <dc:creator>👩‍💻Tracy A King</dc:creator>
      <pubDate>Sun, 07 Feb 2021 23:19:13 +0000</pubDate>
      <link>https://dev.to/stacktracy/10-things-you-can-do-to-support-black-people-in-tech-4e9m</link>
      <guid>https://dev.to/stacktracy/10-things-you-can-do-to-support-black-people-in-tech-4e9m</guid>
      <description>&lt;p&gt;In honor of Black History Month, I put together a list of things you can do to support Black people in tech. This is by no means an exhaustive list, it is one that strongly reflects my own community experiences. I have only come into contact with a fraction of the organizations that support Black people in tech and recognize I am not elevating every organization that does important work in this space. If you have more recommendations, please include them in the comments and, most importantly, share them with your friends and colleagues!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Look Inward
&lt;/h3&gt;

&lt;p&gt;Consider why it’s important to support Black people in tech in the first place. Take time to acknowledge your own personal biases (conscious or unconscious). Have these negatively affected your working relationships or created unsupportive, possibly even hostile, environments for Black people to work in? If you’re responsible for &lt;a href="https://www.vox.com/2015/2/16/8031073/what-are-microaggressions"&gt;microaggressions&lt;/a&gt;, what can you do to change that? What can you do to minimize harm?&lt;/p&gt;

&lt;p&gt;I recommend reading this &lt;a href="https://javavvitch.medium.com/my-time-as-a-black-woman-software-engineer-at-capital-one-5c05fa8faed"&gt;article&lt;/a&gt; written by a Black woman about her experiences to help illuminate some of the issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Support Black Spaces
&lt;/h3&gt;

&lt;p&gt;Recognize and advocate for Black tech organizations and spaces. I have witnessed and experienced dissent against providing underrepresented groups with their own place to grow, network, and learn. It can’t be clarified any better than the DC-based organization, &lt;a href="https://blackcodecollective.com/"&gt;Black Code Collective&lt;/a&gt;, does &lt;a href="https://blackcodecollective.com/about"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  3. Diversify Your Workplace
&lt;/h3&gt;

&lt;p&gt;Examine the diversity of your team and organization. If you have few or no Black teammates at all, why is that? What can you do to change it? If your applicant pool never includes Black people, there’s a reason, and it’s not a pipeline problem. The networks of Black tech workers aren’t aware of your job openings. You can change that by posting on job boards aimed towards diverse applicants like &lt;a href="https://www.diversifytech.co/"&gt;Diversify Tech&lt;/a&gt; or work with companies like &lt;a href="https://blacktechpipeline.com/"&gt;Black Tech Pipeline&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Make D&amp;amp;I Happen
&lt;/h3&gt;

&lt;p&gt;What is your company’s D&amp;amp;I Strategy? Do they have one at all? If not, you could be the change maker to advocate for one. Some companies hire an executive to oversee D&amp;amp;I and some bring in consultants. Implore management to consider hiring a professional for this initiative. It is important to understand that D&amp;amp;I work needs to be ongoing and evolving in order to have an impact. A one-time diversity training won’t meet the needs that real change requires. &lt;/p&gt;

&lt;p&gt;Companies may also see the benefit of sponsoring organizations that support Black tech workers in their community. Can they provide a monetary donation? Can the organization use your office space for meet-ups and other events?&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Practice Inclusion
&lt;/h3&gt;

&lt;p&gt;How can you create or contribute to an inclusive culture that allows your organization to retain Black talent? Inclusive behavior requires awareness and explicit support, which can be found in a company’s mission statement, code of conduct, D&amp;amp;I group statement or employee resource groups. &lt;/p&gt;

&lt;p&gt;On a more personal level, I encourage you to watch for microaggressions your Black colleagues experience. When they do occur, step in or ask your team to be more aware, whether in public or private. For example, if you notice a Black colleague has been interrupted during a meeting, ask them to finish their thoughts before the topic changes. If your team uses problematic technical language (e.g. master/slave, whitelist/blacklist), advocate for substitutes like agency/operatives and allow list/deny list. &lt;/p&gt;

&lt;h3&gt;
  
  
  6. Build a Diverse Network
&lt;/h3&gt;

&lt;p&gt;Be intentional about the network you build. Are you only rubbing elbows in white spaces? Can you make an effort to attend professional events with more diverse attendees? As a white woman in tech, I am likely made aware of more opportunities for career advancement. When I share these opportunities with my white network, I perpetuate the cycle. If my network includes Black technologists, I am able to contribute to making tech more equitable. In the same vein, if I’m only offering advice or mentorship to white technologists, I am creating more white privilege.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Donate
&lt;/h3&gt;

&lt;p&gt;Donate to organizations that are doing the work to support Black people in tech. I recommend &lt;a href="https://www.blackgirlscode.com/"&gt;Black Girls Code&lt;/a&gt;. With teams in 15+ major metropolitan areas in the US, their mission is stated as such: &lt;em&gt;“to increase the number of women of color in the digital space by empowering girls of color ages 7 to 17 to become innovators in STEM fields.”&lt;/em&gt; &lt;br&gt;
They accomplish this by providing workshops, hackathons, and other educational events for Black girls to introduce them to technology and provide educational avenues they might not otherwise have. Donate &lt;a href="https://donorbox.org/support-black-girls-code"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Listen to Learn
&lt;/h3&gt;

&lt;p&gt;Are you listening to Black voices? Commit to learning more in a way that works for your learning style. This might include listening to tech podcasts hosted by Black people (e.g. &lt;a href="https://blacktechunplugged.com/"&gt;Black Tech Unplugged&lt;/a&gt; or &lt;a href="https://gitcutepodcast.com/"&gt;Git Cute&lt;/a&gt;), following more Black people in tech on Twitter, educating yourself through &lt;a&gt;research published regarding racial disparity in the workplace&lt;/a&gt; or reading &lt;a href="https://nymag.com/strategist/article/anti-racist-reading-list.html"&gt;books&lt;/a&gt; or &lt;a href="https://hbr.org/2019/07/does-diversity-training-work-the-way-its-supposed-to"&gt;articles&lt;/a&gt; on a regular basis. &lt;/p&gt;

&lt;h3&gt;
  
  
  9. Recognize and Celebrate
&lt;/h3&gt;

&lt;p&gt;Recognize and celebrate the work of Black technologists whenever the opportunity presents itself. This might be showing appreciation during a sprint retrospective, privately giving praise about their work to managers and higher-ups or nominating them for community awards, such as &lt;a href="https://wwcode.typeform.com/to/NxU0wU7U?mc_cid=64526f69fe&amp;amp;mc_eid=4fa28df9b1"&gt;The Women Who Code Engineers to Watch List&lt;/a&gt; or &lt;a href="http://dcfemtech.com/awards"&gt;The DCFemTech Awards&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Foster Diverse Community
&lt;/h3&gt;

&lt;p&gt;If you’re a tech community organizer, ensure the speakers at your event are diverse. If Black people aren’t applying to speak or host workshops in your formal channels, ask them directly if they’d be interested. Reach out to networks outside your own to advertise opportunities. If you’re representing a technology in a particular community, you’re responsible for representing all the users in that community. Not doing so perpetuates the harmful idea that said technology is only used by certain demographics and all experts are of certain demographics.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. BONUS
&lt;/h3&gt;

&lt;p&gt;Buy some of this amazing Black Code Collective &lt;a href="https://blackcodecollective.com/swag"&gt;swag&lt;/a&gt; so you can donate to an amazing organization, show your support, and look dope AF. &lt;/p&gt;

&lt;p&gt;At the end of the day, your work to be anti-racist needs to be explicit, intentional, and constantly evolving. This is a muscle which continues to grow stronger as you learn more and do more. We will always have room for improvement in understanding problems and implementing solutions. If you take anything away from this list, I hope you’ll consider both your impact and ability to affect change. &lt;/p&gt;

</description>
      <category>diversity</category>
      <category>inclusion</category>
    </item>
    <item>
      <title>A Brief Exploration of Color for Developers</title>
      <dc:creator>👩‍💻Tracy A King</dc:creator>
      <pubDate>Mon, 18 Nov 2019 22:51:48 +0000</pubDate>
      <link>https://dev.to/thisdotmedia/a-brief-exploration-of-color-for-developers-1b3l</link>
      <guid>https://dev.to/thisdotmedia/a-brief-exploration-of-color-for-developers-1b3l</guid>
      <description>&lt;p&gt;The concept of color has been studied by many prominent scientists, including Aristotle and Isaac Newton, for over two millennia. Aristotle developed what we believe to be the first known theory of color, exploring how humans use their senses to experience it. He considered color to be sent from the heavens through celestial rays of light and believed that all colors are a mixture of lightness and darkness, or white and black. It wasn’t until the 17th century when Isaac Newton began to experiment with sunlight and prisms to present the visible spectrum of color or what we now recognize as the visible spectrum present in nature as a rainbow and in the classroom as the color wheel. &lt;/p&gt;

&lt;p&gt;Our ability to see color comes from the photosensitive “cone” cells in our eyes, which allow us to see the visible wavelengths of the spectrum using color-detecting molecules. The perception of color based off of these types of cone cells is more complicated than having three types that are &lt;em&gt;more&lt;/em&gt; sensitive to Red, Green and Blue. There are different theories regarding how color vision works on a receptor level versus a neural level. For the purposes of our exploration - I’d like to rely on Trichromatic theory, the idea that these three colors can be combined to create all colors that humans are capable of perceiving.&lt;/p&gt;

&lt;p&gt;Although the RGB color model and theory predates the digital age, it’s the predominant model we use for displaying color on electronic devices like televisions and computer monitors. The RGB model is unique and can be differentiated by the fact that it is what’s referred to as an “additive color model” as opposed to a “subtractive color model.” It is additive in the sense that we mix different shades of our “Additive Primary Colors” - Red, Green and Blue to create different colors. Using this model, the pixels in the screens on devices we use to interact with the web all start off as black. We use code to express a percentage of Red, Green and Blue to produce the color desired. &lt;/p&gt;

&lt;p&gt;We also use the RGB model as the foundation for the two main CSS color specification methods: RGB and Hex Codes. Each of these methods uses different properties to express the intensity of Red, Green and Blue to show a particular color. I’ll illustrate how we can inform the browser we’d like to show &lt;a href="https://www.theguardian.com/artanddesign/shortcuts/2017/mar/22/millennial-pink-is-the-colour-of-now-but-what-exactly-is-it"&gt;&lt;em&gt;Millennial Pink&lt;/em&gt;&lt;/a&gt; using both of these methods and how they can be converted from Hex Code to RGB values.&lt;/p&gt;

&lt;h1&gt;
  
  
  RGB
&lt;/h1&gt;

&lt;p&gt;We can begin to understand how our devices interpret color codes through learning how we represent colors in CSS using the RGB technique. Using the RGB method allows us to pass three separate parameters of values between 0 and 255. Each of these values represents the level of red, green and blue light we want returned, which will specify a color. Here is a representation of what this looks like as code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RGB(redVal, greenVal, blueVal);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If we’d like to show an intense blue we would pass in the lowest value of 0 for our red and green values and the highest value of 255 for our blue value. You can see an implementation of this using this RGB value to return intense blue text in all p tags using CSS shown here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;p {
color: RGB(0, 0, 255);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;While we are able to create just red, green or blue by passing in the value for one and a value of 0 for the others, we need to mix these in different shades to create other colors. In order to achieve our millennial pink color, we would need to pass through a red value of &lt;code&gt;251&lt;/code&gt;, a green value of &lt;code&gt;159&lt;/code&gt; and a blue value of &lt;code&gt;164&lt;/code&gt;, like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RGB(251,159,164);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h1&gt;
  
  
  Hex Codes
&lt;/h1&gt;

&lt;p&gt;Hex code is short for hexadecimal code and is the most popular method of color specification for developers. We should think of these six alphanumeric characters as three pairs, each of which refers to the shade of red, green and blue in that order. It may be easier to visually conceptualize it in this way:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#RRGGBB&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;These codes represent specific colors and are an easier-to-understand version of binary. In the same way we use the RGB method, we need to be able to to represent the intensity of red, green and blue using a value between &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;255&lt;/code&gt;. As you can see from the visual depiction above, we are only given two characters to do so. This is why we are using alphanumeric codes - to be able to express up to three digits. We max out at &lt;code&gt;99&lt;/code&gt; using the two digit format so we instead begin to use alphabetic characters up to F to express numbers higher than &lt;code&gt;9&lt;/code&gt; (e.g. A = 10, B = 11...F=15). You may recognize this as what’s called the Base-16 system, which uses 16 characters (0-9 and A-F).&lt;/p&gt;

&lt;p&gt;A couple common hex codes developers might recognize are white &lt;code&gt;(#FFFFFF)&lt;/code&gt; and black &lt;code&gt;(#000000)&lt;/code&gt;. From this, we can deduce that hex codes are representing a range of values between 00 and FF, with 00 corresponding to the lowest intensity of color and the FF corresponding to the highest intensity. We can convert hex codes to RGB values and vice versa with this understanding. Let’s take a look at the millennial pink hex code &lt;code&gt;(#FB9FA4)&lt;/code&gt; and work our way back to the RGB value we saw before. In this hex code, we have a red value of &lt;code&gt;FB&lt;/code&gt;, a green value of &lt;code&gt;9F&lt;/code&gt; and a blue value of &lt;code&gt;A4&lt;/code&gt;, or:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#FB9FA4&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We will start by calculating our &lt;code&gt;FB&lt;/code&gt; red value by assessing the first character &lt;code&gt;F&lt;/code&gt; as 15 in the Base-16 system and convert it to decimal because that’s the system RGB uses. We do this by multiplying our &lt;code&gt;F&lt;/code&gt; value of &lt;code&gt;15&lt;/code&gt; by &lt;code&gt;16&lt;/code&gt; which returns &lt;code&gt;240&lt;/code&gt;and we’re halfway there! We will next assess the second character &lt;code&gt;B&lt;/code&gt;, which we know to be equal to &lt;code&gt;11&lt;/code&gt; in the Base-16 system and add it to &lt;code&gt;240&lt;/code&gt; for a total of &lt;code&gt;251&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We can repeat this with our second value &lt;code&gt;9F&lt;/code&gt; by assessing &lt;code&gt;9&lt;/code&gt; as &lt;code&gt;9&lt;/code&gt; and multiply by &lt;code&gt;16&lt;/code&gt; to return a value of &lt;code&gt;144&lt;/code&gt;. We add the hexadecimal value of &lt;code&gt;F&lt;/code&gt; or &lt;code&gt;15&lt;/code&gt; to &lt;code&gt;144&lt;/code&gt; for a total of &lt;code&gt;159&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The last value, &lt;code&gt;A4&lt;/code&gt;, is evaluated the same way. The hexadecimal value of &lt;code&gt;A&lt;/code&gt; or &lt;code&gt;10&lt;/code&gt; is multiplied by &lt;code&gt;16&lt;/code&gt; to return a total of &lt;code&gt;160&lt;/code&gt;. We add the &lt;code&gt;4&lt;/code&gt; for a total of &lt;code&gt;164&lt;/code&gt;. We can see these values &lt;code&gt;(251,159,164)&lt;/code&gt; are the same RGB values we used earlier to achieve the same millennial pink. &lt;/p&gt;

</description>
      <category>color</category>
      <category>rgb</category>
      <category>hexcodes</category>
      <category>css</category>
    </item>
    <item>
      <title>Pro Tips: Don't Script When You Can Style</title>
      <dc:creator>👩‍💻Tracy A King</dc:creator>
      <pubDate>Mon, 18 Nov 2019 20:10:06 +0000</pubDate>
      <link>https://dev.to/thisdotmedia/pro-tips-don-t-script-when-you-can-style-4fpk</link>
      <guid>https://dev.to/thisdotmedia/pro-tips-don-t-script-when-you-can-style-4fpk</guid>
      <description>&lt;p&gt;The world of web development continues to make incredible strides in producing new technologies to better serve our users, and modernize web application development.&lt;/p&gt;

&lt;p&gt;New tools and libraries are developed with &lt;a href="https://hackernoon.com/the-best-practices-for-a-great-developer-experience-dx-9036834382b0" rel="noopener noreferrer"&gt;&lt;em&gt;developer experience (DX)&lt;/em&gt;&lt;/a&gt; in mind, and are often a more attractive option. I have to admit, I’d much rather implement an &lt;a href="https://material.angular.io/components/table/overview" rel="noopener noreferrer"&gt;&lt;em&gt;Angular Material Table&lt;/em&gt;&lt;/a&gt; than look up &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table" rel="noopener noreferrer"&gt;&lt;em&gt;HTML Table Element&lt;/em&gt;&lt;/a&gt; rules one more time!&lt;/p&gt;

&lt;p&gt;They’re also worth learning in order to sharpen your skillset, and stay ahead of the curve. The fact still remains that when we adopt frameworks and UI libraries (see: &lt;a href="https://www.polymer-project.org/" rel="noopener noreferrer"&gt;&lt;em&gt;Bootstrap, Google Polymer&lt;/em&gt;&lt;/a&gt;), we don’t forfeit the responsibility of fundamental expertise, or considering &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Performance" rel="noopener noreferrer"&gt;&lt;em&gt;performance&lt;/em&gt;&lt;/a&gt; for our users.&lt;/p&gt;

&lt;p&gt;It’s easy to lose sight of the fact that a large part of our job as Front-End Developers is to inform the browser of the layout of the page. It’s also easy to revisit the basics! Give yourself a moment to take stock of your current practices in order to see if they can be replaced with any simpler, or safer solutions.&lt;/p&gt;

&lt;p&gt;Our reliance on frameworks, libraries, and in some cases, languages, can be simplified by getting down to our roots - HTML &amp;amp; CSS. I’ve identified two major areas of UI development that have CSS-only solutions, allowing for safer, cleaner, and faster code &lt;strong&gt;structure&lt;/strong&gt; and &lt;strong&gt;animations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Application structures, and their &lt;a href="https://medium.com/front-end-weekly/what-is-a-view-in-web-application-6a2836eed4eb" rel="noopener noreferrer"&gt;&lt;em&gt;views&lt;/em&gt;&lt;/a&gt;, are often based on conditionally rendered elements. This has become easier to accomplish with what is available to us, out-of-the-box, using popular frameworks. You can just as easily build or manipulate the UI with logical checks, and &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Event_handlers" rel="noopener noreferrer"&gt;&lt;em&gt;event handlers&lt;/em&gt;&lt;/a&gt;, as you can with a one-line CSS &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/display" rel="noopener noreferrer"&gt;&lt;em&gt;display&lt;/em&gt;&lt;/a&gt; property, or a CSS &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes" rel="noopener noreferrer"&gt;&lt;em&gt;pseudo-class&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One example of this is &lt;a href="https://angular.io/guide/structural-directives" rel="noopener noreferrer"&gt;&lt;em&gt;Angular Structural Directives&lt;/em&gt;&lt;/a&gt; like &lt;a href="https://angular.io/guide/template-syntax#ngIf" rel="noopener noreferrer"&gt;&lt;em&gt;NgIf&lt;/em&gt;&lt;/a&gt;. NgIf works by binding to a condition expression, and will add or remove the element it controls based on its truthy or falsy value. Here's an example of NgIf in action here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;*ngIf=&lt;/span&gt;&lt;span class="s"&gt;"likesPuppies"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"http://place-puppy.com/"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Puppy Pics!&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;*ngIf=&lt;/span&gt;&lt;span class="s"&gt;"likesKittens"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://placekitten.com/"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Kitten Pics&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can see, from this example, that it's incredibly easy to implement - all you need is an attribute with a boolean condition to show a link to kitten or puppy pictures, depending on the user's preferences. What you don't see is the ~100 lines of &lt;a href="https://github.com/angular/angular/blob/master/packages/common/src/directives/ng_if.ts" rel="noopener noreferrer"&gt;&lt;em&gt;source code&lt;/em&gt;&lt;/a&gt; behind the scenes that powers the NgIf structural directive. Don't forget it's also written in &lt;a href="https://www.typescriptlang.org/" rel="noopener noreferrer"&gt;&lt;em&gt;TypeScript&lt;/em&gt;&lt;/a&gt;, so that logic will also need to be transpiled for the browser to read it. If you need to show or hide a div based on a JavaScript value, you'll still need to use some JavaScript to do it. In this instance, you can opt to use the display property instead, and avoid the framework altogether.&lt;/p&gt;

&lt;p&gt;If you’re only showing an element based on whether or not a value is returned from an &lt;a href="https://www.freecodecamp.org/news/what-is-an-api-in-english-please-b880a3214a82/" rel="noopener noreferrer"&gt;&lt;em&gt;API&lt;/em&gt;&lt;/a&gt;, you don’t need to add extra JavaScript on top of the API call. You can use the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:empty" rel="noopener noreferrer"&gt;&lt;em&gt;empty pseudo-class selector&lt;/em&gt;&lt;/a&gt;. This selector can be used to refer to any elements which don’t contain children or content.&lt;/p&gt;

&lt;p&gt;If our API has been designed to store lots of data, and return whatever is available, the front-end of our application will need to cater to this response. In this example, I am showing a statically created list of items that represents a potential API response with a missing value:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Pens&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Pencils&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;Paper&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FXJwXQMX.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FXJwXQMX.png" alt="Unordered List Broken"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Utilizing the empty pseudo-class selector will allow us to remove the empty list item from the user's view. Here's the code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="nd"&gt;:empty&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;list-style-type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is what the user will see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F7dQYy3A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F7dQYy3A.png" alt="Unordered List Fixed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://egghead.io/instructors/chris-biscardi" rel="noopener noreferrer"&gt;&lt;em&gt;Chris Bicardi&lt;/em&gt;&lt;/a&gt; offers a short lesson on &lt;a href="https://egghead.io/" rel="noopener noreferrer"&gt;&lt;em&gt;egghead.io&lt;/em&gt;&lt;/a&gt; that highlights the intricacies of the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes" rel="noopener noreferrer"&gt;&lt;em&gt;pseudo-class&lt;/em&gt;&lt;/a&gt;, and shows you how to achieve this &lt;a href="https://egghead.io/lessons/css-the-empty-pseudo-selector-gotchas?pl=css-tips-and-tricks-5d10e708" rel="noopener noreferrer"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another great example of this is the addition, and removal, of components like tooltips from the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model" rel="noopener noreferrer"&gt;&lt;em&gt;DOM&lt;/em&gt;&lt;/a&gt;, using JavaScript methods like &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseover_event" rel="noopener noreferrer"&gt;&lt;em&gt;MouseOver&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Tooltips are an intuitive way to make your application more informative &lt;em&gt;and&lt;/em&gt; you don’t need JavaScript to use them! Angular provides a highly configurable &lt;a href="https://material.angular.io/components/tooltip/overview" rel="noopener noreferrer"&gt;&lt;em&gt;Material Design tooltip&lt;/em&gt;&lt;/a&gt; allowing for delay, change in positioning and custom classes. Did you know they’re also available as &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/title" rel="noopener noreferrer"&gt;&lt;em&gt;HTML title attributes&lt;/em&gt;&lt;/a&gt;? The tooltip in this code will be displayed when the user hovers over the label:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"User's First Name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Name&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F4hLbU0p.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2F4hLbU0p.gif" alt="Title Tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also create your own tooltip as shown in the &lt;a href="https://www.w3schools.com/howto/howto_css_tooltip.asp" rel="noopener noreferrer"&gt;&lt;em&gt;W3Schools&lt;/em&gt;&lt;/a&gt; posting here. I especially like the design of this HTML/CSS-only tooltip in this &lt;a href="https://codepen.io/cbracco/pen/qzukg" rel="noopener noreferrer"&gt;&lt;em&gt;codepen&lt;/em&gt;&lt;/a&gt;. These frameworks do offer more choice, but if the job doesn’t call for it, you may be adding a lot more code unnecessarily.&lt;/p&gt;

&lt;p&gt;There’s a good time to consider JavaScript when developing for components like tooltips, especially if they’re a central feature for a view or you’re building a &lt;a href="https://www.cuelogic.com/blog/software-component-reusability" rel="noopener noreferrer"&gt;&lt;em&gt;reusable component&lt;/em&gt;&lt;/a&gt; to match your application. The main takeaway should be to ask yourself whether or not you need to physically remove element from the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model" rel="noopener noreferrer"&gt;&lt;em&gt;DOM&lt;/em&gt;&lt;/a&gt;. If one line of CSS can replace your reliance on a library, it may be worth considering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Animations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Animations are a popular development technique because they make applications more fun, responsive and intuitive. Transitions offer a more sophisticated interaction with our user - the click of a button shows a ripple effect, and you slide to the next element.&lt;/p&gt;

&lt;p&gt;It’s hard to imagine how we ever survived the jarring experience of changing views instantaneously using &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a" rel="noopener noreferrer"&gt;&lt;em&gt;anchor tags&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Libraries such as &lt;a href="http://scrollmagic.io/" rel="noopener noreferrer"&gt;&lt;em&gt;scrollmagic.io&lt;/em&gt;&lt;/a&gt; provide us with the ability for smoother and brighter scroll transitions such as anchor link scrolling, which you can demo &lt;a href="http://scrollmagic.io/examples/advanced/anchor_link_scrolling.html#bottom" rel="noopener noreferrer"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;. The &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Element" rel="noopener noreferrer"&gt;&lt;em&gt;JavaScript Element Web API&lt;/em&gt;&lt;/a&gt; provides us with the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView" rel="noopener noreferrer"&gt;&lt;em&gt;scrollIntoView&lt;/em&gt;&lt;/a&gt; method, which allows us to bring an &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element" rel="noopener noreferrer"&gt;&lt;em&gt;element&lt;/em&gt;&lt;/a&gt; into the view of the user. You can see an example of the method in use &lt;a href="https://codepen.io/ronhook/pen/bZdyRz" rel="noopener noreferrer"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With a minimal amount of CSS code, you can write &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes" rel="noopener noreferrer"&gt;&lt;em&gt;keyframes&lt;/em&gt;&lt;/a&gt; for the same experience! You are only required to define your keyframe from and to states, and then reference your keyframe in your &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/animation" rel="noopener noreferrer"&gt;&lt;em&gt;CSS animation property&lt;/em&gt;&lt;/a&gt;. If you’d like to see keyframes in action, check out this &lt;a href="https://www.impressivewebs.com/demo-files/css3-animated-scene/" rel="noopener noreferrer"&gt;&lt;em&gt;demo&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Animations have become such sought-after experiences, that many of the popular frameworks have included their own libraries for them. &lt;a href="https://angular.io/guide/animations" rel="noopener noreferrer"&gt;&lt;em&gt;Angular Animations&lt;/em&gt;&lt;/a&gt; is a powerful library that of allows the developer to control robust transitions, and rich experiences.&lt;/p&gt;

&lt;p&gt;It uses JavaScript to control the triggers, timing, and display of content. The ability to do this requires a function that calls one or more other functions. If you want to use Angular Animations, you’ll need to import the &lt;a href="https://angular.io/api/platform-browser/animations/BrowserAnimationsModule" rel="noopener noreferrer"&gt;&lt;em&gt;Browser Animations Module&lt;/em&gt;&lt;/a&gt;, import animation functions separately in the files you need them, and then add corresponding &lt;a href="https://www.code-sample.com/2018/04/ngmodule-metadata-properties.html" rel="noopener noreferrer"&gt;&lt;em&gt;metadata properties&lt;/em&gt;&lt;/a&gt;. If you’re doing all of this to trigger an animation on &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseover_event" rel="noopener noreferrer"&gt;&lt;em&gt;MouseOver&lt;/em&gt;&lt;/a&gt; of an element, be aware that you can avoid the library, and JavaScript completely, by using the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:hover" rel="noopener noreferrer"&gt;&lt;em&gt;hover pseudo-selector&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s possible to make the argument that using the &lt;a href="https://angular.io/guide/animations" rel="noopener noreferrer"&gt;&lt;em&gt;Angular Animations library&lt;/em&gt;&lt;/a&gt; could be a better alternative to writing animation logic because it uses the Web Animations API, which doesn’t use JavaScript to change CSS properties.&lt;/p&gt;

&lt;p&gt;JavaScript is a more powerful solution to creating animations. It introduces the possibility of things CSS can't do, for example: pausing and reversing an animation. My advice is to err on the side of CSS, and use caution when developing animations, unless the design calls for a technically complex solution. Take solace in the safety of CSS.&lt;/p&gt;

&lt;p&gt;An overridden, misinterpreted, or incorrect CSS rule can cause issues with user experience in the same way a &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error" rel="noopener noreferrer"&gt;&lt;em&gt;JavaScript error&lt;/em&gt;&lt;/a&gt; does, but won’t prevent your application from loading or operating functionally. More often than not, CSS animations are more performant as well.&lt;/p&gt;

&lt;p&gt;If you’d like to measure the performance difference between a particular CSS animation, and one which uses the Web Animations API, you can test them &lt;a href="https://greensock.com/js/speed.html" rel="noopener noreferrer"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The world of web development is experiencing a renaissance period thanks to the introduction of libraries and &lt;a href="https://www.valuecoders.com/blog/technology-and-apps/top-15-front-end-development-tools-2019/" rel="noopener noreferrer"&gt;&lt;em&gt;tooling&lt;/em&gt;&lt;/a&gt;.&lt;br&gt;
Frameworks make it much easier to rely heavily on JavaScript by providing easy-to-use APIs that structure, style, and animate our applications. Implementation is easy, and the design of the components is stunning.&lt;/p&gt;

&lt;p&gt;I’ve built many applications using them and am incredibly thankful they exist. Their usability significantly reduces the time it requires to get a project functionally, and visually, complete.&lt;/p&gt;

&lt;p&gt;I do, however, believe that they can remove us from maintaining institutional knowledge of our own applications, and there are simpler ways to achieve what the design calls for.&lt;/p&gt;

&lt;p&gt;I hope this has ignited a passion inside of you for what you can do with simple CSS!&lt;/p&gt;

&lt;p&gt;If you have any other techniques you’d like to share, please do so in the comments!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This Dot Inc. is a consulting company which contains two branches : the media stream and labs stream. This Dot Media is the portion responsible for keeping developers up to date with advancements in the web platform. In order to inform authors of new releases or changes made to frameworks/libraries, events are hosted, and videos, articles, &amp;amp; podcasts are published. Meanwhile, This Dot Labs provides teams with web platform expertise using methods such as mentoring and training.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>animations</category>
      <category>cssanimations</category>
    </item>
    <item>
      <title>How To Write Your First HTTP Request to NASA</title>
      <dc:creator>👩‍💻Tracy A King</dc:creator>
      <pubDate>Sat, 03 Aug 2019 17:09:31 +0000</pubDate>
      <link>https://dev.to/stacktracy/how-to-write-your-first-http-request-to-nasa-3471</link>
      <guid>https://dev.to/stacktracy/how-to-write-your-first-http-request-to-nasa-3471</guid>
      <description>&lt;p&gt;I’m excited to introduce you to HTTP requests and provide you with tools and resources to get up and running.&lt;/p&gt;

&lt;p&gt;Learning how to work with APIs is a great way to level up as a front end developer. It’s also a fun way to learn about how to retrieve data and what data is available to you.&lt;/p&gt;

&lt;p&gt;The first thing you’ll need to do is request an API key from NASA by filling out this &lt;a href="https://api.nasa.gov/index.html#apply-for-an-api-key"&gt;form&lt;/a&gt; to apply for an API key.&lt;/p&gt;

&lt;p&gt;You can learn more about what an API key is in this &lt;a href="https://www.youtube.com/watch?v=1yFggyk--Zo"&gt;video&lt;/a&gt;.&lt;br&gt;
The API key will give you the ability to communicate with the NASA API. After you sign up, you will be immediately directed to a page with your new API key.&lt;br&gt;
It should look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vev_ZLrU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/9hahe5ymk1xcq6s21t8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vev_ZLrU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/9hahe5ymk1xcq6s21t8l.png" alt="" width="800" height="379"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sensitive information is blurred to protect the user’s identification and personal API key&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There are a number of different requests you can make with your new NASA API key.&lt;/p&gt;

&lt;p&gt;My personal favorites include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://api.nasa.gov/api.html#NeoWS"&gt;Asteroids — NEOWs&lt;/a&gt;: identifies asteroids based on their closest approach date to earth.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://api.nasa.gov/api.html#MarsPhotos"&gt;Mars Rover Photos&lt;/a&gt;: returns photos collected by NASA’s Curiosity, Opportunity, and Spirit rovers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://api.nasa.gov/api.html#EONET"&gt;EONET&lt;/a&gt;: allows users to browse the entire globe daily and look for natural events as they occur. Storms are regularly spotted in the tropics, dust storms over deserts, forest fires in the summers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please see the &lt;a href="https://api.nasa.gov/index.html"&gt;NASA API documentation&lt;/a&gt; for a full list of capabilities.&lt;/p&gt;
&lt;h1&gt;
  
  
  The Code
&lt;/h1&gt;

&lt;p&gt;I will be using JavaScript’s &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API"&gt;Fetch API&lt;/a&gt; and show you, step-by-step, how to get everything running.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;Set up Fetch to make a request using the NASA API of your choice.&lt;br&gt;
You’ll need the URL for the API you’re attempting to request data from. I’ve chosen to use the URL from my first example, Asteroids — NEOWs:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://api.nasa.gov/neo/rest/v1/neo/browse?api_key=DEMO_KEY&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;You’ll notice the &lt;code&gt;DEMO_KEY&lt;/code&gt; at the end of the URL. This is what you’ll replace with your own personal API key.&lt;br&gt;
Once the API key has been added, the URL should look very similar to this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://api.nasa.gov/neo/rest/v1/neo/browseapi_key=34oLy4FhODjKGewo2VIy8dsfgSGq6Qb1TQEpAX5s&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The only difference is that your API key will be unique and not identical to the one above.&lt;/p&gt;

&lt;p&gt;The Fetch method will take the URL listed above as its one mandatory argument in string form, like so:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;fetch("https://api.nasa.gov/neo/rest/v1/neo/browseapi_key=34oLy4FhODjKGewo2VIy8dsfgSGq6Qb1TQEpAX5s")&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 3
&lt;/h3&gt;

&lt;p&gt;Now we need to append a promise using then to the fetch request which will be returned and resolved to the response of that request.&lt;br&gt;
You’ll notice we build out two cases, a then and a catch — one for success and one for failure, respectively:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Here’s a demo of the executed code using &lt;a href="//jsfiddle.net"&gt;JSFiddle&lt;/a&gt; with &lt;a href="https://developers.google.com/web/tools/chrome-devtools/"&gt;Chrome DevTools&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When I run the code, the response from the API will show up in the network tab of the dev console:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TNw5SCQv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/g0sq6aamutklxom1qy06.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TNw5SCQv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/g0sq6aamutklxom1qy06.gif" alt="" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you run this code using your unique API key in JSFiddle with the console open, you will either see the response object or you’re met with an alert box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please note the above code will not run because the API key is not valid.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion and Resources
&lt;/h3&gt;

&lt;p&gt;Feel free to reach out to me if you have questions about the code. It’ll be easiest for both of us if you send over a &lt;a href="//jsfiddle.net"&gt;JSFiddle&lt;/a&gt; of the issue you’re experiencing.&lt;/p&gt;

&lt;p&gt;If NASA isn’t your thing, there are a ton of other APIs out there for you to work with, using similar code.&lt;/p&gt;

&lt;p&gt;Here is a short list to check out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.twitter.com/en/docs/api-reference-index"&gt;Twitter&lt;/a&gt;: provides developers with a lot of different opportunities, including collecting data for trending words and topics in certain regions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apilist.fun/api/fec"&gt;FEC&lt;/a&gt;: provides developers with tools to collect information on campaign donations in US federal elections.&lt;/p&gt;

&lt;p&gt;Thank you to &lt;a href="https://twitter.com/blondiebytes?lang=en"&gt;Kathryn Hodge&lt;/a&gt; for her video about API keys that I referenced above. I’d also like to thank &lt;a href="https://twitter.com/wynv"&gt;Wyn Van Devanter&lt;/a&gt;, &lt;a href="https://twitter.com/cm__powell"&gt;Chloé Powell&lt;/a&gt;, Manfred Steyer and &lt;a href="https://twitter.com/christianhoward"&gt;Christian Howard&lt;/a&gt; for their feedback and support.&lt;/p&gt;

</description>
      <category>nasa</category>
      <category>http</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
