<?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: Genevieve McAllister</title>
    <description>The latest articles on DEV Community by Genevieve McAllister (@kjgenevieve).</description>
    <link>https://dev.to/kjgenevieve</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%2F218363%2F299d7d0e-d5d2-44d5-825f-b8c7f98787a0.png</url>
      <title>DEV Community: Genevieve McAllister</title>
      <link>https://dev.to/kjgenevieve</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kjgenevieve"/>
    <language>en</language>
    <item>
      <title>Test-Driven-Development, Put Plainly</title>
      <dc:creator>Genevieve McAllister</dc:creator>
      <pubDate>Thu, 31 Oct 2019 20:34:22 +0000</pubDate>
      <link>https://dev.to/kjgenevieve/test-driven-development-put-plainly-4190</link>
      <guid>https://dev.to/kjgenevieve/test-driven-development-put-plainly-4190</guid>
      <description>&lt;p&gt;Every industry has its buzz-word jargon that is meant to make your resume search-engine-optimized and your speeches TEDx worthy. These phrases often point to an idea with merit, but the packaging makes me want to projectile vomit. If a man in a suit starts talking about “synergy” or being a “thought partner,” all I see is Jack Donaghy filling in his Six Sigma Wheel of Domination, and all I feel is the bile rising.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tGw13vmJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.buzzfeed.com/buzzfeed-static/static/2015-02/6/17/enhanced/webdr11/enhanced-24700-1423260057-1.png%3Fdownsize%3D800:%2A%26output-format%3Dauto%26output-quality%3Dauto" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tGw13vmJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.buzzfeed.com/buzzfeed-static/static/2015-02/6/17/enhanced/webdr11/enhanced-24700-1423260057-1.png%3Fdownsize%3D800:%2A%26output-format%3Dauto%26output-quality%3Dauto" alt="Six Sigma"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My weak stomach aside, it is important to know what tech’s keywords are and—if they’re worthwhile—how to implement the ideas. Test-Drive-Development, or TDD, is worthwhile. So, what is it, why does it matter, and how do you do it?&lt;/p&gt;

&lt;h4&gt;
  
  
  What is TDD?
&lt;/h4&gt;

&lt;p&gt;TDD is the practice of building and running tests for your program before you write the code that you want to test. That means that the first time you run the tests, they will fail. This process ensures that you think about the purpose of all the code you write, which should cut out redundant or unnecessary code and make what you do write clearer.&lt;/p&gt;

&lt;p&gt;As a side note, when researching TDD you are bound to come across Agile Software Development. In short, Agile is a group of protocols that help tech businesses run smoothly. Other Agile practices include User Stories, Retrospectives, Scrum, and Stand-ups.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why does TDD matter?
&lt;/h4&gt;

&lt;p&gt;Frankly, it matters because people think it matters, which means you probably need it to get a job. The only data I found to support TDD was on a blog post by &lt;a href="https://www.hillelwayne.com/post/why-tdd-isnt-crap/"&gt;Hillel Wayne&lt;/a&gt; who quotes a study that suggests “TDD projects had roughly a 60% decrease in defect density.” So TDD may lead to a decrease in bugs and an increase in quality.&lt;/p&gt;

&lt;p&gt;However, even &lt;a href="https://www.agilealliance.org/glossary/tdd/"&gt;Agile Alliance’s website&lt;/a&gt; says, “although empirical research has so far failed to confirm this, veteran practitioners report that TDD leads to improved design qualities in the code…” When your lead evangelist says, “I can’t prove it, but listen to what these people have to say!” you’re as good as an as-seen-on-tv product no one asked for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5Xpfc3tE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://img.clipd.com/filter:scale/quill/b/3/5/9/8/2/b359824f7da8df6cf3a7c563cbf8cab2762d8958.gif%3Fmw%3D600" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5Xpfc3tE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://img.clipd.com/filter:scale/quill/b/3/5/9/8/2/b359824f7da8df6cf3a7c563cbf8cab2762d8958.gif%3Fmw%3D600" alt="as seen on tv gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  How to use TDD
&lt;/h4&gt;

&lt;p&gt;The framework you write your tests in depends on the language you use; some frameworks include Mocha, Capybara, Cucumber, Konacha, and Poltergeist. Deciding which to use and how to write the tests is another topic in and of itself. Regardless of which language you write in, there are five steps to TDD:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write a test for your program. In order to write tests, you have to know what data types you will pass into methods, as well as what type of data you expect it to return.&lt;/li&gt;
&lt;li&gt;Run (and fail) the tests. If the tests don’t fail, they’re not checking what you wanted them to check. If they do fail, you are able to observe how your program behaves when it fails.&lt;/li&gt;
&lt;li&gt;Write the code in your program needed to pass the first test. Write as little as possible to get it to pass.&lt;/li&gt;
&lt;li&gt;Keep coding until all of the tests pass.&lt;/li&gt;
&lt;li&gt;Refactor as needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While the evidence for the efficacy of TDD is not strong, it is important to be comfortable with the protocol, and hey, maybe you’ll avoid writing buggy code this way, too.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>tdd</category>
      <category>agile</category>
    </item>
    <item>
      <title>The Quick and Dirty Guide to Pull Requests</title>
      <dc:creator>Genevieve McAllister</dc:creator>
      <pubDate>Mon, 21 Oct 2019 19:06:24 +0000</pubDate>
      <link>https://dev.to/kjgenevieve/the-quick-and-dirty-guide-to-pull-requests-3nbl</link>
      <guid>https://dev.to/kjgenevieve/the-quick-and-dirty-guide-to-pull-requests-3nbl</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--unMX0aI5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgs.xkcd.com/comics/git.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--unMX0aI5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgs.xkcd.com/comics/git.png" alt="xkcd 1597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a beginner to programming, I’ve struggled to understand the complexities of GitHub. While I appreciate the basic concept of Git, the actual workflow can feel overwhelming at times.&lt;/p&gt;

&lt;p&gt;My purpose here is not to give a deep or theoretical understanding of GitHub, but rather to document the commands you need to merge a branch into the master on a shared repository. (Note: this is different from making a Pull Request from a forked repository.)&lt;/p&gt;

&lt;p&gt;If you do want a deeper understanding, I’ve linked to some good resources at the bottom of the post.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Create your branch&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   git checkout -B your-branch-name
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This command will both create and move you to a new branch.&lt;br&gt;
   &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6zsnoGOl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/6g86sNZ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6zsnoGOl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/6g86sNZ.gif" alt="V 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Push your branch to GitHub&lt;/strong&gt;&lt;br&gt;
    Your branch will not automatically show up on GitHub. To push it up, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   git push origin [name_of_your_new_branch]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Do your work&lt;/strong&gt;&lt;br&gt;
   &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2ZX83ujr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thumbs.gfycat.com/GlitteringKnobbyAoudad-size_restricted.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2ZX83ujr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thumbs.gfycat.com/GlitteringKnobbyAoudad-size_restricted.gif" alt="Working"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Push your changes up to your branch on GitHub&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   git add .
   git commit -m “Message”
   git push
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pnuPG8sQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/NBL0Re5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pnuPG8sQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/NBL0Re5.gif" alt="V 4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Open a Pull Request&lt;/strong&gt;&lt;br&gt;
   Opening a pull request is you asking the repository’s maintainer, “Please pull my changes to master.”&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On GitHub, make sure you’re on the branch you were working on.&lt;/li&gt;
&lt;li&gt;Click “New Pull Request”&lt;/li&gt;
&lt;li&gt;Make sure the “base” is what you want to merge into; in this case, I want to merge into master.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vUcLDw7z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/qqoD3fi.gif" alt="V 5a-c"&gt;
&lt;/li&gt;
&lt;li&gt;Write a title and description.&lt;/li&gt;
&lt;li&gt;Click “Create Pull Request”
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U0TJn8Ri--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/fB4dgNB.gif" alt="V 5d"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Approve a Pull Request&lt;/strong&gt;&lt;br&gt;
   Approving the Pull Request will probably be done by someone else on the team.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click “Merge Pull Request”&lt;/li&gt;
&lt;li&gt;Add a comment if desired.&lt;/li&gt;
&lt;li&gt;Click “Confirm Merge”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DdyEmoFo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/tGpsTNR.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DdyEmoFo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/tGpsTNR.gif" alt="V 6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What if there are conflicts?
&lt;/h3&gt;

&lt;p&gt;When you open the pull request, it will let you know. You may continue to make the request anyway.&lt;br&gt;
   &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--feheHr-6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/L9jMfse.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--feheHr-6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/L9jMfse.gif" alt="Conflicts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click “Resolve Conflicts”
This will show you the conflicts in the document. Edit whatever needs to be edited.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D3cIaLdK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/x8zNW39.gif" alt="C A"&gt;
&lt;/li&gt;
&lt;li&gt;Click “Mark as Resolved”&lt;/li&gt;
&lt;li&gt;Click “Commit Merge”
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k-7czlNM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.imgur.com/PwYQUIB.gif" alt="C B-C"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;A high-level overview of the GitHub workflow: &lt;a href="https://guides.github.com/introduction/flow/"&gt;link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub's two-page cheatsheet: &lt;a href="https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf"&gt;link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Details on how to create a Pull Request: &lt;a href="https://help.github.com/en/articles/creating-a-pull-request"&gt;link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Tutorial: &lt;a href="https://git-scm.com/docs/gittutorial"&gt;link&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>github</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Compromising User Data via Push Notification Services</title>
      <dc:creator>Genevieve McAllister</dc:creator>
      <pubDate>Wed, 18 Sep 2019 00:07:37 +0000</pubDate>
      <link>https://dev.to/kjgenevieve/compromising-user-data-via-push-notification-services-k6a</link>
      <guid>https://dev.to/kjgenevieve/compromising-user-data-via-push-notification-services-k6a</guid>
      <description>&lt;p&gt;On September 3, 2019, I looked at my phone to find a surprising notification:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aH8I3kjI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/kspCJ8P.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aH8I3kjI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/kspCJ8P.jpg" alt="Message Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The message was sent from &lt;a href="https://www.uvlens.com/"&gt;UVLens&lt;/a&gt;, a niche app with a small user base. Typically, UVLens displays the current UV Index in your region and provides recommendations on sun protection for your skin type. As a Very Pale Person, this has been a really useful way for me to decide if I need to wear sunscreen (yes) and a hat (most likely) when I go out of the house (rarely). It has never sent me a push notification before, and certainly never one so salacious.&lt;/p&gt;

&lt;p&gt;UVLens followed up quickly with an apology via push notification and explained on &lt;a href="https://www.facebook.com/UVLens/posts/3298768900134988"&gt;social media&lt;/a&gt; that their “3rd party push notification service [had] been compromised.”&lt;/p&gt;

&lt;p&gt;This message piqued my curiosity much more than the former. What is a push service and how can it be compromised?&lt;/p&gt;

&lt;h3&gt;
  
  
  Push Service
&lt;/h3&gt;

&lt;p&gt;A push service is a company that manages an API that applications use to automate messaging their users. They provide easy ways to query for groups of users based on their data, such as time of last login, whether they’ve made a purchase through the app, or device type (iOS, Android, Chrome, etc.).&lt;/p&gt;

&lt;p&gt;I reached out to UVLens about their service provider, and they said that they used &lt;a href="https://onesignal.com/"&gt;OneSignal&lt;/a&gt; when the offending notification was sent, but they have since switched to the Google-run &lt;a href="https://firebase.google.com/docs/cloud-messaging"&gt;Firebase Cloud Messaging&lt;/a&gt;. According to OneSignal, they are used by companies like Verizon, Virgin Mobile, and HQ.&lt;/p&gt;

&lt;h3&gt;
  
  
  Push Notifications
&lt;/h3&gt;

&lt;p&gt;Push Notifications are a topic unto themselves, but in short, it is a three-way conversation between an application’s server, the push service, and the user.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A user downloads your app and agrees to receive push notifications.&lt;/li&gt;
&lt;li&gt;Your app’s server receives that information and...&lt;/li&gt;
&lt;li&gt;passes it to your push service.&lt;/li&gt;
&lt;li&gt;The push service responds with a unique ID for that user.&lt;/li&gt;
&lt;li&gt;When you’re ready to send a message, you query the push service’s API for the user id’s that you need, then pass the information to the push service.&lt;/li&gt;
&lt;li&gt;The push service sends the message to users you indicated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In order for the push notifications to go through, you typically need two passwords that the push service provides: your application’s ID and an API Rest Key.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Push Service Can Be Compromised
&lt;/h3&gt;

&lt;p&gt;OneSignal has not made any public statements on the event or how this could happen. However, their API documentation provides clues on simple methods someone could use to access an application’s data.&lt;/p&gt;

&lt;p&gt;First, the codes used to query the API are readily available, including instructions to quickly download a CVS file of all your user information. You do need the two authentication keys, though.&lt;/p&gt;

&lt;p&gt;However, in researching this topic, I found that many people had actually posted their keys online. Usually, they only gave the REST API Key or the application ID,  but a few gave both. (One programmer even posted an image of his user’s IDs.) Using that information, hypothetically, one would be able to download the application’s user information CVS. Hypothetically.&lt;/p&gt;

&lt;p&gt;Of course, there are other ways in which passwords become open to the public, but this is a unique instance where user error is leading to compromised data.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Vulnerability of Small Applications
&lt;/h3&gt;

&lt;p&gt;If this is the method that was used to send the rogue notification, then UVLens was already particularly vulnerable. OneSignal has a simple query that will download all of an app’s user information if they have fewer than 100,000 users.&lt;/p&gt;

&lt;p&gt;It’s impossible to know how many downloads an app has, but we can use a general estimate based on ratings. If we assume that a free app, like UVLens, will receive one rating for every 100 downloads, they likely have a total user base of about 88,000.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Reviews&lt;/th&gt;
&lt;th&gt;Estimated Downloads&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Apple Store&lt;/td&gt;
&lt;td&gt;170&lt;/td&gt;
&lt;td&gt;17,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Play Store&lt;/td&gt;
&lt;td&gt;713&lt;/td&gt;
&lt;td&gt;71,300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;883&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;88,300&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;It’s possible that all of their users’ information was downloaded with one command in the terminal.&lt;/p&gt;

&lt;p&gt;UVLens says that their data and servers were not compromised and that users’ information is safe. Luckily for them, the most personal information users input is their skin tone and zip code, so even if that data was released, it’s unlikely to have far-reaching effects.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources Consulted
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://documentation.onesignal.com/docs/product-overview"&gt;OneSignal Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/4756717/find-the-number-of-downloads-for-a-particular-app-in-apple-appstore"&gt;Estimating App Downloads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/web/fundamentals/push-notifications/how-push-works"&gt;How Push Works&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>api</category>
    </item>
    <item>
      <title>Creating Technology to Continue or Disrupt Systemic Oppression</title>
      <dc:creator>Genevieve McAllister</dc:creator>
      <pubDate>Mon, 26 Aug 2019 20:04:46 +0000</pubDate>
      <link>https://dev.to/kjgenevieve/creating-technology-to-continue-or-disrupt-systemic-oppression-1pba</link>
      <guid>https://dev.to/kjgenevieve/creating-technology-to-continue-or-disrupt-systemic-oppression-1pba</guid>
      <description>&lt;p&gt;From the time I was old enough to be asked, “What do you want to be when you grow up?”, I have answered with a community-oriented job. I value work that leverages a person’s skills to do the most good for the most people; that’s why I went into teaching. I wanted to help others to be stronger communicators and have the tools to think critically about the world.&lt;/p&gt;

&lt;p&gt;So when I decided it was time to leave my job as a high school English teacher, my strong convictions about community engagement gave me pause. When I had chosen my first career, I had quickly dismissed anything at a for-profit company, certain that it meant selling out. I overlooked how the ubiquity of technology means that it can be used to give agency to people who are oppressed.&lt;/p&gt;

&lt;p&gt;Because of my early misunderstandings and doubts about technology, I’m going to highlight three apps that exacerbate current issues in regard to class, gender, and race, and three apps that work against systemic oppression.&lt;/p&gt;

&lt;h3&gt;
  
  
  Class
&lt;/h3&gt;

&lt;p&gt;In November 2015, Seattle called a state of emergency on homelessness. As of January 2018, &lt;a href="https://www.theatlantic.com/technology/archive/2018/06/an-app-for-ejecting-the-homeless/563849/" rel="noopener noreferrer"&gt;over 12,000 King County residents were homeless&lt;/a&gt;. It is a contentious issue; there are always disagreements about how homelessness should be handled, but Seattle has received a rise in backlash after promoting its Find It, Fix It app.&lt;/p&gt;

&lt;p&gt;The app itself is inoffensive; it provides a convenient way for citizens to report issues around the city. &lt;a href="https://www.seattle.gov/customer-service-bureau/find-it-fix-it-mobile-app" rel="noopener noreferrer"&gt;According to the website&lt;/a&gt;, you can request service for graffiti, illegal dumping, or dead animals. However, since putting posters around town that encourage people to “See a tent? Report a tent,” people have submitted &lt;a href="https://www.seattletimes.com/seattle-news/homeless/city-spammed-with-fake-alerts-after-poster-campaign-to-report-homeless-campers-goes-viral/" rel="noopener noreferrer"&gt;hundreds of fake alerts&lt;/a&gt;.&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%2Fstatic.seattletimes.com%2Fwp-content%2Fuploads%2F2019%2F07%2FFix-it-reports-W1.jpg" 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%2Fstatic.seattletimes.com%2Fwp-content%2Fuploads%2F2019%2F07%2FFix-it-reports-W1.jpg" alt="Find it Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hilariously, many of the alerts flag the downtown REI’s many display tents.&lt;/p&gt;




&lt;p&gt;On the other end of the spectrum, local startup &lt;a href="https://www.samaritan.city/" rel="noopener noreferrer"&gt;Samaritan&lt;/a&gt; aims to make it easier to directly donate to nearby homeless people. If you are experiencing homelessness, you can apply for a small fob that you keep on yourself. The fob alerts app users that someone nearby is in need. App users can then read your story and decide if they want to donate money.&lt;/p&gt;

&lt;p&gt;Using the fob does have limitations that may make people more likely to donate: “To keep their beacon active, beacon holders meet with a counselor monthly to set and follow up on goals.” Additionally, the money they receive may only be used at specific locations, such as Grocery Outlet and Goodwill.&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%2Fpbs.twimg.com%2Fmedia%2FEBccRQDUIAE4JEj.jpg" 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%2Fpbs.twimg.com%2Fmedia%2FEBccRQDUIAE4JEj.jpg" alt="Samaritan Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whether or not people choose to donate, the app is an interesting way to humanize people who are often encouraged to be invisible. Giving app users access to the stories of homeless people could lead to more empathy and understanding. At the very least, it’s encouraging that &lt;a href="https://www.samaritan.city/pilot" rel="noopener noreferrer"&gt;nearly 13,000&lt;/a&gt; people have downloaded the app.&lt;/p&gt;

&lt;p&gt;For more information about technology impacting Seattle’s homeless population, I recommend reading &lt;a href="https://www.theatlantic.com/technology/archive/2018/06/an-app-for-ejecting-the-homeless/563849/" rel="noopener noreferrer"&gt;The Atlantic’s article&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gender
&lt;/h3&gt;

&lt;p&gt;Technology is part of a larger culture, so it’s not surprising that there are so many insidious apps available to help you photoshop yourself skinnier, lighter-skinned, or without acne. But when that technology doesn’t just conform to these expectations but actually helps people to more easily control others, it is especially dangerous.&lt;/p&gt;

&lt;p&gt;Absher is a government-supported Saudi Arabian app that allows men to easily give or deny travel permission to those under their guardianship, including adult women. “Specifically, male users can register women’s names and passport numbers, select how many journeys she can take and how long she can travel for” (&lt;a href="https://time.com/5532221/absher-saudi-arabia-what-to-know/" rel="noopener noreferrer"&gt;Time&lt;/a&gt;). The app also alerts users when one of their dependents leaves the country, giving them further reach and control.&lt;/p&gt;

&lt;p&gt;Some have made &lt;a href="https://www.theguardian.com/world/commentisfree/2019/feb/16/saudi-arabia-wife-tracking-app-absher-politicans-complicit" rel="noopener noreferrer"&gt;cases for why the app is actually an improvement&lt;/a&gt;. One example given is of a college student who studies abroad in Australia; the app allows her father to sign off on her travel without being in the same city. Clearly, the app is not the problem, but the underlying restrictive, sexist laws. Regardless, the app implicitly violates human rights.&lt;/p&gt;




&lt;p&gt;While I’m no longer a teacher, I still believe that education is one of the best ways to empower people. One easy way for people to be empowered is for them to have an understanding of their own bodies. However, a small 2010 study revealed that “74 percent of men and 46 percent of women questioned were unable to identify the cervix” on a diagram (&lt;a href="https://www.vice.com/en_us/article/ppaka8/way-too-many-women-dont-know-where-their-vaginas-are" rel="noopener noreferrer"&gt;Vice&lt;/a&gt;). While we wait for public schools to provide comprehensive sex ed, we can turn to &lt;a href="https://helloclue.com/" rel="noopener noreferrer"&gt;Clue&lt;/a&gt; for help.&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%2FMgWUUWa.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%2FMgWUUWa.png" alt="Clue Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the surface, Clue is a period tracker app that allows people to determine when they are likely to menstruate, have symptoms of PMS, or be most fertile. While these are great functions, I am most impressed by Clue’s commitment to providing research and articles on subjects that are often stigmatized. By packaging them with a functional app and a smooth interface, more women have access to information about their bodies.&lt;/p&gt;

&lt;h3&gt;
  
  
  Race
&lt;/h3&gt;

&lt;p&gt;A number of explicitly racist apps have made headlines in the past few years, but I would like to highlight the ways in which crowdsourcing information can lead to a misuse of technology.&lt;/p&gt;

&lt;p&gt;RedZone offers some useful functions for people traveling to a new city. The navigation app uses crime reports to draw their routes and take users through statistically safer areas.&lt;/p&gt;

&lt;p&gt;Objective data is useful, however, the crowdsource feature is where issues can come into play. Just as Nextdoor revealed which of your neighbors are racist, RedZone allows people to comment on their perceived safety at different locations. While that seems reasonable, we need to remember that we live in a country where the police get called because people of color are &lt;a href="https://www.vox.com/identities/2018/5/11/17340908/racial-profiling-starbucks-yale-police-violence-911-bias" rel="noopener noreferrer"&gt;taking naps&lt;/a&gt; in their dorm’s common area. &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%2F8NnW6wi.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%2F8NnW6wi.png" alt="RedZone Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because of America’s long history of oppressing people of color, it’s hard to imagine that RedZone’s ratings will be anything but racist Yelp reviews.&lt;/p&gt;




&lt;p&gt;Technology is also being used to actively combat some issues that immigrants face. &lt;a href="https://notifica.us/" rel="noopener noreferrer"&gt;Notifica&lt;/a&gt; allows users “to plan, learn and act if you are at risk of being detained by deportation agents.” In addition to providing resources and information on immigrant rights, the Notifica app lets users preprogram phone numbers and a message. If the user is about to be detained, they only need to press a button that sends the message and their location to their contacts.&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%2FttO9tPh.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%2FttO9tPh.png" alt="Notifica Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At a time when children return from the first day of school to find that &lt;a href="https://www.cnn.com/2019/08/08/us/mississippi-immigration-raids-children/index.html" rel="noopener noreferrer"&gt;ICE has raided&lt;/a&gt; and their parents have been detained, this technology can help families stay in contact with each other and legal representatives.&lt;/p&gt;




&lt;p&gt;From the bad to the good, the technology we create comes from the values we hold. While we can create apps that deliver food to our doors, we can also use technology to provide education, resources, and agency to people who experience oppression.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
