<?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>Forem: Michael Lustig - halfjew22@gmail.com</title>
    <description>The latest articles on Forem by Michael Lustig - halfjew22@gmail.com (@technoplato).</description>
    <link>https://forem.com/technoplato</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%2F118779%2Fa685595b-6516-4066-8fba-160f3de815c5.jpg</url>
      <title>Forem: Michael Lustig - halfjew22@gmail.com</title>
      <link>https://forem.com/technoplato</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/technoplato"/>
    <language>en</language>
    <item>
      <title>Format Swift on Save - AppCode with swift-format</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Mon, 18 Jan 2021 00:01:12 +0000</pubDate>
      <link>https://forem.com/technoplato/format-swift-on-save-appcode-with-swift-format-1j25</link>
      <guid>https://forem.com/technoplato/format-swift-on-save-appcode-with-swift-format-1j25</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Gm8R9NxoOlE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Coming from WebStorm and TypeScript land, I got sick of not having auto-formatted code while working on a small Front End SwiftUI project. After finally figuring out how to autoformat my Swift code, I had to share as NO RESULTS ONLINE WERE HELPFUL!&lt;/p&gt;

&lt;p&gt;See below and linked video. Let me know if you have any questions or suggestions for improvements. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;brew install nshipster/formulae/swift-format&lt;/li&gt;
&lt;li&gt;Create external tool &lt;/li&gt;
&lt;li&gt;Name it swift-format&lt;/li&gt;
&lt;li&gt;Under Tool Settings &amp;gt; Arguments:        --in-place $FilePath$&lt;/li&gt;
&lt;li&gt;Advanced Options &amp;gt; Uncheck Open console for tool output&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;li&gt;Click Apply&lt;/li&gt;
&lt;li&gt;Create a Keymap for your new external tool by searching for “swift-format” and double clicking on the result&lt;/li&gt;
&lt;li&gt;Open any code file&lt;/li&gt;
&lt;li&gt;Edit &amp;gt; Macros &amp;gt; Start Macro Recording&lt;/li&gt;
&lt;li&gt;Invoke the keycap from step 6 and then save your file&lt;/li&gt;
&lt;li&gt;Click the stop button in the bottom right hand of your editor to stop the macro&lt;/li&gt;
&lt;li&gt;LAST STEP Assign the ⌘S keymap to your new macro&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>swift</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Answer:</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Sun, 23 Aug 2020 07:51:49 +0000</pubDate>
      <link>https://forem.com/technoplato/answer-5h7h</link>
      <guid>https://forem.com/technoplato/answer-5h7h</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;div class="ltag__stackexchange--header"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AoTUKOcU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
          &lt;a href="https://stackoverflow.com/questions/34930735/pros-cons-of-using-redux-saga-with-es6-generators-vs-redux-thunk-with-es2017-asy/34933395#34933395" rel="noopener noreferrer"&gt;
            &lt;span class="title-flare"&gt;answer&lt;/span&gt; re: Pros/cons of using redux-saga with ES6 generators vs redux-thunk with ES2017 async/await
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Jan 21 '16&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/34930735/pros-cons-of-using-redux-saga-with-es6-generators-vs-redux-thunk-with-es2017-asy/34933395#34933395" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oeieW07A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          505
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h2-sXgSn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;In redux-saga, the equivalent of the above example would be&lt;/p&gt;
&lt;pre class="lang-js prettyprint-override"&gt;&lt;code&gt;export function* loginSaga() {
  while(true) {
    const { user, pass } = yield take(LOGIN_REQUEST)
    try {
      let { data } = yield call(request.post, '/login', { user, pass });
      yield fork(loadUserData, data.uid);
      yield put({ type: LOGIN_SUCCESS, data });
    } catch(error) {&lt;/code&gt;&lt;/pre&gt;…
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    &lt;a href="https://stackoverflow.com/questions/34930735/pros-cons-of-using-redux-saga-with-es6-generators-vs-redux-thunk-with-es2017-asy/34933395#34933395" class="ltag__stackexchange--btn" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Walthrough Numero Dos of Clipper (Using Google Cloud Vision + Twilio to Turn Screenshots into Video Clips)</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Sat, 02 May 2020 03:16:46 +0000</pubDate>
      <link>https://forem.com/technoplato/walthrough-numero-dos-of-clipper-using-google-cloud-vision-twilio-to-turn-screenshots-into-video-clips-4k40</link>
      <guid>https://forem.com/technoplato/walthrough-numero-dos-of-clipper-using-google-cloud-vision-twilio-to-turn-screenshots-into-video-clips-4k40</guid>
      <description>&lt;p&gt;Walking through the code behind my Twilio Hackathon project for DevTo.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/GW1ttSVbikE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Thanks a ton to Twilio and DevTo for putting this on. This was very fun to make and I learned a bunch. Hope to share that with some others. &lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>python</category>
    </item>
    <item>
      <title>Walthrough Numero Uno of Clipper (Using Google Cloud Vision + Twilio to Turn Screenshots into Video Clips)</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Sat, 02 May 2020 02:48:29 +0000</pubDate>
      <link>https://forem.com/technoplato/walthrough-numero-uno-of-clipper-using-google-cloud-vision-twilio-to-turn-screenshots-into-video-clips-2ijg</link>
      <guid>https://forem.com/technoplato/walthrough-numero-uno-of-clipper-using-google-cloud-vision-twilio-to-turn-screenshots-into-video-clips-2ijg</guid>
      <description>&lt;p&gt;Walking through the code behind my Twilio Hackathon project for DevTo.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ALQplkOYchY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Thanks a ton to Twilio and DevTo for putting this on. This was very fun to make and I learned a bunch. Hope to share that with some others. &lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>python</category>
    </item>
    <item>
      <title>Clipper - Use Machine Learning and Twilio to Turn Screenshots into Video Clips</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Fri, 01 May 2020 05:02:32 +0000</pubDate>
      <link>https://forem.com/technoplato/clipper-use-machine-learning-and-twilio-to-turn-screenshots-into-video-clips-2995</link>
      <guid>https://forem.com/technoplato/clipper-use-machine-learning-and-twilio-to-turn-screenshots-into-video-clips-2995</guid>
      <description>&lt;h2&gt;
  
  
  What I built --- Clipper
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Category Submission: Interesting Integrations
&lt;/h4&gt;

&lt;h2&gt;
  
  
  Walking Through the Code
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ALQplkOYchY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://clipper.ngrok.io"&gt;https://clipper.ngrok.io&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/technoplato"&gt;
        technoplato
      &lt;/a&gt; / &lt;a href="https://github.com/technoplato/Clipper"&gt;
        Clipper
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Send us a text and we'll send you a clip of your video
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Try It&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://clipper.ngrok.io/" rel="nofollow"&gt;https://clipper.ngrok.io/&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
Setup&lt;/h1&gt;
&lt;h2&gt;
Docker &amp;amp; Docker Compose&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/get-docker/" rel="nofollow"&gt;Install Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/compose/install/" rel="nofollow"&gt;Install Docker Compose&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Google Cloud Vision&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Follow instructions &lt;a href="https://cloud.google.com/vision/docs/quickstart-client-libraries" rel="nofollow"&gt;here&lt;/a&gt; to create a Google Cloud Vision Enabled Project and download &lt;code&gt;key.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Open the &lt;code&gt;env&lt;/code&gt; file at the root of the project and make &lt;code&gt;WHERE_IS_MY_GOOGLE_CLOUD_PLATFORM_KEY_JSON_FILE&lt;/code&gt; match where you downloaded your file.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Twilio&lt;/h2&gt;
&lt;ol start="0"&gt;
&lt;li&gt;Use the promo code DEVHACK20 for $20 when you create your account.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.twilio.com/try-twilio?promo=Gbv52f" rel="nofollow"&gt;Create a new Twilio Account&lt;/a&gt; &lt;strong&gt;(DISCLAIMER: this is my referral link)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Navigate to your &lt;a href="https://www.twilio.com/console" rel="nofollow"&gt;Twilio Console&lt;/a&gt; and copy your &lt;code&gt;ACCOUNT SID&lt;/code&gt; and &lt;code&gt;AUTH TOKEN&lt;/code&gt; into the same &lt;code&gt;.env&lt;/code&gt; file from above.&lt;/li&gt;
&lt;li&gt;Buy a Twilio phone number and copy it to your &lt;code&gt;pyclipper/pyclipper.ini.sample&lt;/code&gt; file.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Finally, change the name of the &lt;code&gt;pyclipper.ini.sample&lt;/code&gt; to &lt;code&gt;pyclipper.ini&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
Run Application&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;docker-compose up&lt;/code&gt; (AFTER FOLLOWING SETUP INSTRUCTIONS)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
TODO&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;del&gt;Get google application credentials into environemnt where its needed. I need to figure out docker for this&lt;/del&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;del&gt;Automate &lt;code&gt;ngrok&lt;/code&gt; and &lt;code&gt;twilio&lt;/code&gt; webhook configuration&lt;/del&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;del&gt;Install twilio cli&lt;/del&gt;…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/technoplato/Clipper"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I built it (what's the stack? did I run into issues or discover something new along the way?)
&lt;/h2&gt;

&lt;p&gt;I learned a ton and I've got to write more about the experience, but right now, just wanted to submit a post with the Dockerized and runnable version of my project.&lt;/p&gt;

&lt;p&gt;The stack is built with Flask, RabbitMQ, Google Cloud Vision, and Docker / Docker Compose (if that counts in the stack?).&lt;/p&gt;

&lt;p&gt;I want to say thanks to Twilio and DevTo for putting this on. I had a lot of fun creating this project and will use it and continue to improve on it for my own personal experience and enjoyment after the hackathon. Good luck to all!&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Computer Vision / Twilio: Clipper - Text a Screenshot or URL of a Video &amp; We'll Text You a Video Clip to Download</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Thu, 23 Apr 2020 20:43:46 +0000</pubDate>
      <link>https://forem.com/technoplato/clipper-text-a-screenshot-or-url-of-a-video-we-ll-text-you-a-video-clip-to-download-a3a</link>
      <guid>https://forem.com/technoplato/clipper-text-a-screenshot-or-url-of-a-video-we-ll-text-you-a-video-clip-to-download-a3a</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;Clipper - Text a Screenshot or URL of a Video &amp;amp; We'll Text You a Video Clip to Download&lt;/p&gt;

&lt;p&gt;I'm very excited that I've finished my first pass at Clipper, an app I've been wanting to make for a while and finally used the hackathon as an excuse to do so. &lt;/p&gt;

&lt;p&gt;I love watching long podcasts and whatnot on YouTube, and it's nice that you can share a video at a start time, but I never found that satisfactory to share with friends. With Clipper, you can share a screenshot of the video you're watching and Clipper will download and send you a clip of that video. You can also share the URL of the video with Clipper. Clipper has only been thoroughly tested with YouTube screenshots. It will definitely work with most video URLs though if shared via text.&lt;/p&gt;

&lt;h4&gt;
  
  
  Category Submission
&lt;/h4&gt;

&lt;p&gt;Interesting Integrations&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://clipper.ngrok.io/"&gt;Clipper&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/NCsmEpg4Ab4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/technoplato/Clipper"&gt;https://github.com/technoplato/Clipper&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it (what's the stack? did I run into issues or discover something new along the way?)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Flask

&lt;ul&gt;
&lt;li&gt;handles servery stuff&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;RabbitMQ

&lt;ul&gt;
&lt;li&gt;handles doing the heavy lifting&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Google Cloud Vision

&lt;ul&gt;
&lt;li&gt;helps magically turn screenshots into video clips&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Additional Resources/Info
&lt;/h2&gt;

&lt;p&gt;All of the below were helpful in getting this prototype functional. I need to organize them but will just plop them for now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/docs/sms/tutorials/how-to-create-sms-conversations-python"&gt;Twilo Conversation Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/docs/usage/tutorials/how-to-secure-your-flask-app-by-validating-incoming-twilio-requests"&gt;Secure Flask App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/docs/usage/secure-credentials"&gt;Store Your Twilio Credentials Securely - Twilio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://towardsdatascience.com/tutorial-google-vision-api-with-python-and-heroku-3b8d3ff5f6ef"&gt;Tutorial: Google Vision API with Python and Heroku - Towards Data Science&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.datacamp.com/community/tutorials/fuzzy-string-python"&gt;Fuzzy String Matching in Python - DataCamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html"&gt;OpenCV: Image Thresholding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pyimagesearch.com/2017/07/10/using-tesseract-ocr-python/"&gt;Using Tesseract OCR with Python - PyImageSearch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/blog/2018/05/how-to-receive-and-download-picture-messages-in-python-with-twilio-mms.html"&gt;How to receive and download picture messages in Python with Twilio MMS - Twilio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://xn--hken-qoa.no/blog/cropping-3-python/#1-The-problem-of-cropping"&gt;håken.no&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tesseract-ocr.github.io/tessdoc/ImproveQuality"&gt;Improving the quality of the output | tessdoc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pyimagesearch.com/2018/09/17/opencv-ocr-and-text-recognition-with-tesseract/"&gt;OpenCV OCR and text recognition with Tesseract - PyImageSearch&lt;/a&gt;
&lt;a href="https://youtu.be/j-3vuBynnOE"&gt;https://youtu.be/j-3vuBynnOE&lt;/a&gt;
&lt;a href="https://youtu.be/WvoLTXIjBYU"&gt;https://youtu.be/WvoLTXIjBYU&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tzutalin/labelImg"&gt;GitHub - tzutalin/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://towardsdatascience.com/creating-your-own-object-detector-ad69dda69c85"&gt;Creating your own object detector - Towards Data Science&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.dlology.com/blog/how-to-train-an-object-detection-model-easy-for-free/"&gt;How to train an object detection model easy for free | DLology&lt;/a&gt;*&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/hughperkins/tf-coriander/blob/master/doc/build-from-source.md"&gt;tf-coriander/build-from-source.md at master · hughperkins/tf-coriander · GitHub&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/vision/cloud-client/detect/detect.py"&gt;python-docs-samples/detect.py at master · GoogleCloudPlatform/python-docs-samples · GitHub&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://gaopinghuang0.github.io/2018/08/03/python3-import-and-project-layout#running-a-module-in-a-sub-package"&gt;Python3 import and project layout · Gaoping Huang’s Blog&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;IN ACTION&lt;/p&gt;

&lt;p&gt;GIFS COMING SOON (this is because I don't know Markdown well) --&amp;gt; &lt;a href="" class="article-body-image-wrapper"&gt;&lt;img alt="Screenshot + Accompanying Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>python</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>TWILIO REFERRAL MEGATHREAD</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Fri, 03 Apr 2020 07:46:33 +0000</pubDate>
      <link>https://forem.com/technoplato/twilio-referral-megathread-5hco</link>
      <guid>https://forem.com/technoplato/twilio-referral-megathread-5hco</guid>
      <description>&lt;p&gt;&lt;a href="http://www.twilio.com/referral/Gbv52f"&gt;www.twilio.com/referral/Gbv52f&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since a bunch of us are going to be signing up, I figured it'd make sense.&lt;/p&gt;

&lt;p&gt;Mods, please let me know if you feel like this is abuse. Maybe we can each take four and be on an honors system?&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>twilio</category>
    </item>
    <item>
      <title>Testing Firestore Cloud Function Local Emulator (Red, Green, -Refactor-)</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Tue, 03 Mar 2020 02:24:37 +0000</pubDate>
      <link>https://forem.com/technoplato/testing-firestore-cloud-function-local-emulator-red-green-refactor-5ahe</link>
      <guid>https://forem.com/technoplato/testing-firestore-cloud-function-local-emulator-red-green-refactor-5ahe</guid>
      <description>&lt;p&gt;✅👍 ➡ &lt;a href="https://www.youtube.com/c/michaellustig?sub_confirmation=1"&gt;https://www.youtube.com/c/michaellustig?sub_confirmation=1&lt;/a&gt; ✅&lt;br&gt;
👨‍💻   &lt;a href="https://dev.to/technoplato"&gt;https://dev.to/technoplato&lt;/a&gt;&lt;br&gt;
↙ 2️⃣8️⃣0️⃣ 🔤 💬 &lt;a href="https://twitter.com/technoplato"&gt;https://twitter.com/technoplato&lt;/a&gt;&lt;br&gt;
↗ 2️⃣8️⃣0️⃣ 🔤  &lt;a href="https://medium.com/@michaellustig"&gt;https://medium.com/@michaellustig&lt;/a&gt;&lt;br&gt;
💾 &lt;a href="https://github.com/technoplato"&gt;https://github.com/technoplato&lt;/a&gt;&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>testing</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Show Notifications in Foreground on Expo iOS Application!!</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Fri, 21 Feb 2020 18:33:10 +0000</pubDate>
      <link>https://forem.com/technoplato/show-notifications-in-foreground-on-expo-ios-application-4mg6</link>
      <guid>https://forem.com/technoplato/show-notifications-in-foreground-on-expo-ios-application-4mg6</guid>
      <description>&lt;p&gt;&lt;em&gt;I'm not sure exactly when this was added to Expo, but as of Expo version 36 is easily doable.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To show Expo Push Notifications on iOS when your app is in the foreground, please do the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Vibration&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-native&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Notifications&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;expo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Permissions&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;expo-permissions&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Constants&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;expo-constants&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;registerForPushNotificationsAsync&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                          
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Constants&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isDevice&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                                                
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;existingStatus&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;Permissions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;         
      &lt;span class="nx"&gt;Permissions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NOTIFICATIONS&lt;/span&gt;                                            
    &lt;span class="p"&gt;);&lt;/span&gt;                                                                     
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;finalStatus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;existingStatus&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                                      
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;existingStatus&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;granted&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                                    
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;Permissions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;askAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;                       
        &lt;span class="nx"&gt;Permissions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NOTIFICATIONS&lt;/span&gt;                                          
      &lt;span class="p"&gt;);&lt;/span&gt;                                                                   
      &lt;span class="nx"&gt;finalStatus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                                                
    &lt;span class="p"&gt;}&lt;/span&gt;                                                                      
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;finalStatus&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;granted&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                                       
      &lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Failed to get push token for push notification!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;            
      &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                                                              
    &lt;span class="p"&gt;}&lt;/span&gt;                                                                      
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;Notifications&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getExpoPushTokenAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Go to https://expo.io/notifications and copy the token below to easily send yourself a notification.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Notifications on iOS (and I believe Android) ONLY WORK ON A PHYSICAL DEVICE, not a simulator or emulator!!!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;               
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                                                    
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;expoPushToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;                               
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                                                                 
    &lt;span class="nx"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Must use physical device for Push Notifications&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;              
  &lt;span class="p"&gt;}&lt;/span&gt;                                                                        
&lt;span class="p"&gt;};&lt;/span&gt;                                                                         

&lt;span class="nx"&gt;componentDidMount&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                                                      
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;registerForPushNotificationsAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;                                                
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_notificationSubscription&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Notifications&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;              
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_handleNotification&lt;/span&gt;                                               
  &lt;span class="p"&gt;);&lt;/span&gt;                                                                       
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;_handleNotification&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nx"&gt;notification&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;                                                                                    
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;notification&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;remote&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Vibration&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;vibrate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;                                                  
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;notificationId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Notifications&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;presentLocalNotificationAsync&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;      
      &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Follow @technoplato&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
      &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;To learn yourself goodly (also follow PewDiePie)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                                             
      &lt;span class="na"&gt;ios&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;_displayInForeground&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;// &amp;lt;-- HERE'S WHERE THE MAGIC HAPPENS                                &lt;/span&gt;
    &lt;span class="p"&gt;});&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;&lt;strong&gt;Quick and Easy Sanity Check&lt;/strong&gt;&lt;br&gt;
1) Go here: &lt;a href="https://expo.io/notifications"&gt;https://expo.io/notifications&lt;/a&gt;&lt;br&gt;
2) Copy the token that is output to the terminal when your application is run. &lt;br&gt;
3) Open your application on iOS.&lt;br&gt;
4) Send a notification to yourself from &lt;a href="https://expo.io/notifications"&gt;https://expo.io/notifications&lt;/a&gt; and observe that it shows up even when your app is foregrounded. &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notifications WILL NOT BE RECEIVED ON AN IOS SIMULATOR&lt;/li&gt;
&lt;li&gt;Expo makes Notifications ridiculously easy. I honestly can't believe it. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No idea why &lt;code&gt;displayInForeground&lt;/code&gt; is false by default and not more prominent in the documentation. I'll submit a PR for it if I can. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Code originally found at this Snack: &lt;a href="https://snack.expo.io/@documentation/pushnotifications?platform=ios"&gt;https://snack.expo.io/@documentation/pushnotifications?platform=ios&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LocalNotification.ios._displayInForeground&lt;/code&gt;  &lt;em&gt;found here: &lt;a href="https://docs.expo.io/versions/v36.0.0/sdk/notifications/#localnotification"&gt;https://docs.expo.io/versions/v36.0.0/sdk/notifications/#localnotification&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &amp;lt;/ Post  &amp;gt;
&lt;/h1&gt;

&lt;h3&gt;
  
  
  🤟🙏 THANKS FOR READING 🤟🙏
&lt;/h3&gt;

&lt;p&gt;If you liked the post, please be sure to give it a thumbs up, a heart, an upvote, a retweet, or whatever it is that the cool kids do these days. All my follow links are below if you're intersted in quick tutorials and explanations like this one. &lt;/p&gt;

&lt;h3&gt;
  
  
  🤔 QUESTIONS | 📝 COMMENTS | 📉 CONCERNS | 📩 SUGGESTIONS
&lt;/h3&gt;

&lt;p&gt;Let me know if you have any questions in the comments or if I could have done a better job explaining anything anywhere.&lt;/p&gt;

&lt;p&gt;Most importantly, &lt;br&gt;
💻📲👨🏻‍💻KEEP CODING, KEEP LEARNING, AND KEEP DOING!&lt;/p&gt;

&lt;h3&gt;
  
  
  👇👇👇 FOLLOW ME 👇👇👇
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/c/michaellustig?sub_confirmation=1"&gt;YouTube&lt;/a&gt;   |   &lt;a href="https://dev.to/technoplato"&gt;dev.to&lt;/a&gt;   |   &lt;a href="https://twitter.com/technoplato/"&gt;Twitter&lt;/a&gt;   |   &lt;a href="https://github.com/technoplato"&gt;Github&lt;/a&gt;    |   &lt;a href="https://www.reddit.com/user/halfjew22"&gt;Reddit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>expo</category>
      <category>notifications</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Posted from CLI!</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Tue, 29 Oct 2019 20:35:03 +0000</pubDate>
      <link>https://forem.com/technoplato/posted-from-cli-238f</link>
      <guid>https://forem.com/technoplato/posted-from-cli-238f</guid>
      <description>&lt;p&gt;Body......&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Empty post</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Sun, 27 Oct 2019 17:41:21 +0000</pubDate>
      <link>https://forem.com/technoplato/empty-post-2dmp</link>
      <guid>https://forem.com/technoplato/empty-post-2dmp</guid>
      <description></description>
    </item>
    <item>
      <title>✅useContext ✅ to Update State in List from Detail View (React Native)</title>
      <dc:creator>Michael Lustig - halfjew22@gmail.com</dc:creator>
      <pubDate>Tue, 08 Oct 2019 14:54:32 +0000</pubDate>
      <link>https://forem.com/technoplato/usecontext-to-update-state-in-list-from-detail-view-react-native-59ni</link>
      <guid>https://forem.com/technoplato/usecontext-to-update-state-in-list-from-detail-view-react-native-59ni</guid>
      <description>&lt;p&gt;FOLLOW ME: &lt;a href="https://www.youtube.com/c/michaellustig?sub_confirmation=1"&gt;YouTube&lt;/a&gt;   |   &lt;a href="https://dev.to/technoplato"&gt;dev.to&lt;/a&gt;   |   &lt;a href="https://twitter.com/technoplato/"&gt;Twitter&lt;/a&gt;   |   &lt;a href="https://github.com/technoplato"&gt;Github&lt;/a&gt;   |    &lt;a href="https://medium.com/@michaellustig"&gt;Medium&lt;/a&gt;   |   &lt;a href="https://www.reddit.com/user/halfjew22"&gt;Reddit&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Video
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=UgHL_F3tW5g"&gt;✅useContext ✅Use React Context to Update State in List from Detail View (React Native)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Liquid error: internal&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/UgHL_F3tW5g"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Brief Intro
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.reddit.com/r/reactnative/comments/derijn/help_regarding_updating_states/"&gt;I came across a post this morning on Reddit&lt;/a&gt; asking about how to update state in their list from their details page. I thought this would be a good video to make, explaining how to do this in a couple of different ways. I ended up only making the video demonstrating how to use React Context to do this, which is slightly more complex code, but I feel cleaner ultimately. &lt;/p&gt;

&lt;p&gt;Run the code in your browser: &lt;a href="https://snack.expo.io/@technoplato/toggle-state-in-list-from-detail-view-%28using-context%29"&gt;Context&lt;/a&gt; | &lt;a href="https://snack.expo.io/@technoplato/toggle-state-in-list-from-detail-view-using-callbacks"&gt;Callbacks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="[https://snack.expo.io/@technoplato/toggle-state-in-list-from-detail-view-(using-context)](https://snack.expo.io/@technoplato/toggle-state-in-list-from-detail-view-(using-context))"&gt;Snack (run and tinker with code IN YOUR BROWSER 🤯&lt;/a&gt;  |     |   Reddit Post&lt;/p&gt;

&lt;h1&gt;
  
  
  SHUTUP, WHERES THE CODE
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;createContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;useContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;useMemo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="nx"&gt;StyleSheet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;View&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;SafeAreaView&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;TouchableOpacity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="nx"&gt;FlatList&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-native&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createAppContainer&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-navigation&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createStackNavigator&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-navigation-stack&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;DATA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bd7acbea-c1b1-46c2-aed5-3ad53abb28ba&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bd7acbea-c1b1-46c2-aed5-3ad53abb28ba&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;First Item&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;selected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="p"&gt;},&lt;/span&gt;  
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;3ac68afc-c605-48d3-a4f8-fbd91aa97f63&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;3ac68afc-c605-48d3-a4f8-fbd91aa97f63&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Second Item&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;selected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="p"&gt;},&lt;/span&gt;  
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;58694a0f-3da1-471f-bd96-145571e29d72&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;58694a0f-3da1-471f-bd96-145571e29d72&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Third Item&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;selected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="p"&gt;},&lt;/span&gt;  
&lt;span class="p"&gt;};&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;DataContext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;createContext&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;  
  &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;  
  &lt;span class="na"&gt;selectItem&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;  
&lt;span class="p"&gt;});&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;DataContextProvider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;selectItem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;  
    &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;selected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;selected&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
      &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
        &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
      &lt;span class="p"&gt;},&lt;/span&gt;  
    &lt;span class="p"&gt;});&lt;/span&gt;  
  &lt;span class="p"&gt;};&lt;/span&gt;  

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;initialState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;DATA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;selectItem&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;selectItem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="p"&gt;};&lt;/span&gt;  

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;initialState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;  
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DataContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Provider&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;DataContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Provider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
  &lt;span class="p"&gt;);&lt;/span&gt;  
&lt;span class="p"&gt;};&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Main&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;navigation&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;DataContext&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;  
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;SafeAreaView&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;container&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FlatList&lt;/span&gt;  
        &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;  
        &lt;span class="na"&gt;renderItem&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;  
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Item&lt;/span&gt;  
            &lt;span class="na"&gt;item&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;  
            &lt;span class="na"&gt;handleShowDetails&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
              &lt;span class="nx"&gt;navigation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;navigate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Details&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
                &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
              &lt;span class="p"&gt;});&lt;/span&gt;  
            &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;  
          &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;  
        &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;  
       &lt;span class="na"&gt;keyExtractor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;  
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;  
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;SafeAreaView&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
  &lt;span class="p"&gt;);&lt;/span&gt;  
&lt;span class="p"&gt;};&lt;/span&gt;  

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleShowDetails&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;selected&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;selectItem&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;DataContext&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;useMemo&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;  
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TouchableOpacity&lt;/span&gt;  
        &lt;span class="na"&gt;onPress&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
          &lt;span class="nx"&gt;selectItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
        &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;  
        &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;  
          &lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
          &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;selected&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#6e3b6e&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#f9c2ff&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;  
        &lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;View&lt;/span&gt;  
          &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;  
            &lt;span class="na"&gt;flexDirection&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;row&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
            &lt;span class="na"&gt;justifyContent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;space-between&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
            &lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
          &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt; &lt;span class="na"&gt;onPress&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;handleShowDetails&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Details&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;View&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TouchableOpacity&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
    &lt;span class="p"&gt;);&lt;/span&gt;  
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;selected&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;  
&lt;span class="p"&gt;}&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Details&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;navigation&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;navigation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;selectItem&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;DataContext&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;  

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;  
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;View&lt;/span&gt;  
      &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;  
        &lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;centered&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
        &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;selected&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#6e3b6e&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#f9c2ff&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;  
      &lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;styles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`Details for Item: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;  
         &lt;span class="na"&gt;onPress&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
          &lt;span class="nx"&gt;selectItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
        &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`Is selected: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;selected&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;\n\n(click me to toggle selected)`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;View&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
  &lt;span class="p"&gt;);&lt;/span&gt;  
&lt;span class="p"&gt;};&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;StackNavigation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;createStackNavigator&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;  
  &lt;span class="na"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="na"&gt;Details&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Details&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
&lt;span class="p"&gt;});&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Container&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;createAppContainer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;StackNavigation&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;  
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;DataContextProvider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Container&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;  
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;DataContextProvider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;  
&lt;span class="p"&gt;);&lt;/span&gt;  

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;styles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;StyleSheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;  
  &lt;span class="na"&gt;centered&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;justifyContent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;alignItems&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="p"&gt;},&lt;/span&gt;  
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;fontSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;fontWeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;400&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="p"&gt;},&lt;/span&gt;  
  &lt;span class="na"&gt;container&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;marginTop&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="p"&gt;},&lt;/span&gt;  
  &lt;span class="na"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#f9c2ff&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;marginVertical&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;marginHorizontal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&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;h1&gt;
  
  
  🤟🙏 THANKS FOR READING 🤟🙏
&lt;/h1&gt;

&lt;p&gt;If you liked the post, please be sure to give it a thumbs up, a heart, an upvote, a retweet, or whatever it is that the cool kids do these days. All my follow links are below if you're intersted in quick tutorials and explanations like this one. &lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 QUESTIONS | 📝 COMMENTS | 📉 CONCERNS | 📩 SUGGESTIONS
&lt;/h2&gt;

&lt;p&gt;Let me know if you have any questions in the comments or if I could have done a better job explaining anything anywhere.&lt;/p&gt;

&lt;p&gt;Most importantly, &lt;br&gt;
💻📲👨🏻‍💻KEEP CODING, KEEP LEARNING, AND KEEP DOING!&lt;/p&gt;

&lt;h2&gt;
  
  
  👇👇👇 FOLLOW ME 👇👇👇
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/c/michaellustig?sub_confirmation=1"&gt;YouTube&lt;/a&gt;   |   &lt;a href="https://dev.to/technoplato"&gt;dev.to&lt;/a&gt;   |   &lt;a href="https://twitter.com/technoplato/"&gt;Twitter&lt;/a&gt;   |   &lt;a href="https://github.com/technoplato"&gt;Github&lt;/a&gt;   |    &lt;a href="https://medium.com/@michaellustig"&gt;Medium&lt;/a&gt;   |   &lt;a href="https://www.reddit.com/user/halfjew22"&gt;Reddit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>tutorial</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
