<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Dhara Patel on Medium]]></title>
        <description><![CDATA[Stories by Dhara Patel on Medium]]></description>
        <link>https://medium.com/@dpatel1?source=rss-9afa37fccc4c------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/2*ZrehU25pMklizsv5kvK6eA.jpeg</url>
            <title>Stories by Dhara Patel on Medium</title>
            <link>https://medium.com/@dpatel1?source=rss-9afa37fccc4c------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 25 Jun 2026 04:00:07 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@dpatel1/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Building an AI Chat Bot on iOS SwiftUI]]></title>
            <link>https://dpatel1.medium.com/building-an-ai-chat-bot-on-ios-swiftui-c430814880b9?source=rss-9afa37fccc4c------2</link>
            <guid isPermaLink="false">https://medium.com/p/c430814880b9</guid>
            <category><![CDATA[ai-development]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[openai]]></category>
            <category><![CDATA[chatbots]]></category>
            <category><![CDATA[swiftui]]></category>
            <dc:creator><![CDATA[Dhara Patel]]></dc:creator>
            <pubDate>Thu, 23 Nov 2023 04:50:49 GMT</pubDate>
            <atom:updated>2024-12-27T17:31:09.305Z</atom:updated>
            <content:encoded><![CDATA[<p>Hi there :) My name is Dhara and I’m a entrepreneur and engineer. Sooo I thought why not document my process as I add an AI chat bot to Wana. Join me on this journey!</p><p>Wana is a app that matches users based on their creative interests and then curates things for them to do together. <a href="https://apps.apple.com/us/app/wana/id6444112567">Check us out on the Apple App Store</a>! So, we are adding a new feature to better serve our creative users.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dSbTR9DZRqriCEtP" /><figcaption>Photo by <a href="https://unsplash.com/@iammottakin?utm_source=medium&amp;utm_medium=referral">Mojahid Mottakin</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Step 1: Designing the feature</h3><p>The AI chat bot will be a “creativity assistant” — ideally pulling from sources like Rick Rubin, The Artist’s Way, etc. I played around with the <a href="https://c.ai/c/zz-tk1VyHWn-B-QCB_VrRIE1VJZEruDX0afnKtraSSc">Rick Rubin character on Character.ai</a> to see how helpful it can be and it was actually really cool! It gave some good tips on how I can unblock my paintings. It is pretty much what to integrate into my app.</p><h3>Step 2: Choosing the right model or integration tool</h3><p>There are several up &amp; coming SaaS companies that will integrate ChatGPT or various other AI models into your platform for you. But, I’m going to try and integrate ChatGPT into my iOS app myself because why not?!</p><p>First, I went onto <a href="https://platform.openai.com/">OpenAI’s developer platform</a>. Luckily they just recently released <em>Assistant</em> into their beta API. The <em>Assistant</em> tool is exactly what it sounds like — an assistant. You can give it whatever instructions you want! I created one for creativity with the following instructions and then played around with it on <a href="https://platform.openai.com/playground">Playground</a>. Playground allows you to test your settings without deploying or integrating just yet. It also doesn’t cost any credits so it’s best to test on Playground first.</p><blockquote>You are a personal creativity assistant. Your job is to help your user grow and unblock their creative spirit, excell in their hobby. Pull from authors, artists, and philosophers of the past to give advice and exercises. Always reference where your advice is coming from.</blockquote><p>We are going to design our chatbot such that there is one <em>assistant</em> for the whole app and each user will have their own private <em>thread</em>.</p><p>A <em>thread</em> is a line of messages between one user and the AI. A <em>message</em> is one unit written by the Assistant or the User. A thread must be <em>run</em> in order to get a response from the Assistant.</p><h3>Step 3: Integrate OpenAI API into your SwiftUI App</h3><p>Open the hyperlinks in a new tab. Some are images of code.</p><ol><li>If you haven’t already create/grab your secret API key from OpenAI</li><li>Open Xcode (surprise!).</li><li>Create a <em>OpenAIService</em> to manage the API and its requests</li><li><a href="https://cdn-images-1.medium.com/max/1600/1*IVMzz04mo3QPn6ltOpF7Nw.png">Create the following methods:</a></li></ol><blockquote>createAssistant() — to create a new assistant and define its parameters (this can be done on the Dashboard too)</blockquote><blockquote>getAssistant() — retrieve an existing assistant</blockquote><blockquote>createThread() — start a new conversation thread, the AI will remember the conversation only in each thread</blockquote><blockquote>getThread() — retrieve an existing conversation</blockquote><blockquote>sendMessage() — send a message from the user to the Assistant</blockquote><blockquote>runThread() — retrieve a message from the Assistant</blockquote><ol><li>Use <a href="https://platform.openai.com/docs/api-reference/assistants/createAssistant">APIReference</a> to pull the endpoints for each of these methods</li><li>Create the <em>assistant </em>using OpenAI’s dev platform and then store the assistantId</li><li><a href="https://cdn-images-1.medium.com/max/1600/1*fMXHgwkiFz60qMlQmtj6wQ.png">Define the response structs: Assistant, Thread, Message.</a> Make sure they are Encodable and Decodable.</li><li><a href="https://cdn-images-1.medium.com/max/1600/1*2vWRa9VTC_ducTbiDYAxlg.png">Define the request structs for pretty much each endpoint.</a> Make sure they are encodable.</li></ol><h3>Step 4: Edit your User object such that each has its own thread</h3><ol><li><a href="https://cdn-images-1.medium.com/max/1600/1*3wy53Hq--F-CzvCUyDOhWQ.png">Add an attribute <em>threadId </em>of type <em>String</em> to your User object.</a> Make sure to add it to your decoder and encoder if necessary.</li><li><a href="https://cdn-images-1.medium.com/max/1600/1*3wy53Hq--F-CzvCUyDOhWQ.png">Add an attribute aiM<em>essages </em>that will store all the messages from the thread.</a> Do not encode / decode because on init we will pull these messages from the API.</li><li><a href="https://cdn-images-1.medium.com/max/1600/1*iKHiWeEbW1ryLdBesLU8rg.png">Create a method retreiveThreadMessages()</a> in OpenAIService that calls <a href="https://platform.openai.com/docs/api-reference/messages/listMessages">this endpoint</a> and returns a list of messages for that user’s thread.</li><li><a href="https://cdn-images-1.medium.com/max/1600/1*tozAyx2uFpz_nTwT0JVLZA.png">Create a method createThread()</a> in OpenAIService that calls <a href="https://platform.openai.com/docs/api-reference/threads/createThread">this endpoint</a> and returns a new Thread object.</li><li>When you create a user, <a href="https://cdn-images-1.medium.com/max/1600/1*0T5jPMHyuGBYuyVXHkudNw.png">create its thread and then store the thread</a>.</li></ol><h3>Step 5: Create your chatbot home view</h3><p>I’m creating a really simple chatbot home that looks like <a href="https://cdn-images-1.medium.com/max/1600/1*Vn0rXqr_0nW2mS-n1q0i-A.png">this</a>. <a href="https://cdn-images-1.medium.com/max/1600/1*c67m8dKvXYflzkuKb4I-Hw.png">Here’s the code</a> for the simple chat view.</p><h3>Step 6: Send Message Func</h3><p>Lastly we want to go back to the OpenAIService and fill in those methods. First we must add the message to the user’s <em>thread</em>. Then, we <em>run</em> the assistant.</p><ol><li><a href="https://cdn-images-1.medium.com/max/1600/1*FPLm2m6NiLRZ_iitaY7FNQ.png">Create a sendMessage method in OpenAIService</a> that calls <a href="https://platform.openai.com/docs/api-reference/messages/createMessage">this endpoint </a>using the user’s threadId.</li><li><a href="https://cdn-images-1.medium.com/max/1600/1*K14gclIrVkpufMrtSvv-FQ.png">Create a runAssistant method in OpenAIService</a> that calls <a href="https://platform.openai.com/docs/api-reference/runs/createRun">this endpoint</a> using the assistantId of the Assistant we created in OpenAI dev platform. You can find it under the “Assistants” tab on the left.</li><li>When the user clicks the <em>Send</em> button in the chat home view, <a href="https://cdn-images-1.medium.com/max/1600/1*euYodWkVgqbTNM-X5dRj-A.png">this sendMessage func</a> is called.</li></ol><h3>Step 7. Test and iterate :)</h3><p>This didn’t immediately work for me. I had to play around with the response structs and had to figure out that you have to RUN the assistant in order to get a response 😭. Feel free to leave comments if issues arise. Best of luck :).</p><p>P.S. This is a part of Wana Create — a matchmaking app that helps people get creative in the real world. <a href="https://www.instagram.com/wanacreate/">Check it out here</a>!</p><h3>Images</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IVMzz04mo3QPn6ltOpF7Nw.png" /><figcaption>Don’t worry about the return types as of now! We’ll go through that later.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fMXHgwkiFz60qMlQmtj6wQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2vWRa9VTC_ducTbiDYAxlg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3wy53Hq--F-CzvCUyDOhWQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0T5jPMHyuGBYuyVXHkudNw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*c67m8dKvXYflzkuKb4I-Hw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/982/1*Vn0rXqr_0nW2mS-n1q0i-A.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*euYodWkVgqbTNM-X5dRj-A.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FPLm2m6NiLRZ_iitaY7FNQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*K14gclIrVkpufMrtSvv-FQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tozAyx2uFpz_nTwT0JVLZA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iKHiWeEbW1ryLdBesLU8rg.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c430814880b9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mental models for entrepreneurs]]></title>
            <link>https://dpatel1.medium.com/mental-models-for-entrepreneurs-7bb749ada58f?source=rss-9afa37fccc4c------2</link>
            <guid isPermaLink="false">https://medium.com/p/7bb749ada58f</guid>
            <category><![CDATA[mental-models]]></category>
            <category><![CDATA[entrepreneurship]]></category>
            <category><![CDATA[mindset]]></category>
            <dc:creator><![CDATA[Dhara Patel]]></dc:creator>
            <pubDate>Sun, 16 Apr 2023 10:18:15 GMT</pubDate>
            <atom:updated>2023-04-21T12:14:24.754Z</atom:updated>
            <content:encoded><![CDATA[<p>Mental models are concepts or processes that can be applied across industries and to real life. I use my toolbox of mental models to more quickly shift my mindset and keep my core values at the forefront while approaching complex problems.</p><p>Starting a business is one of the most difficult things I’ve done. Here are some mental models applied to entrepreneurship I use to make better decisions. (P.S. This is a running list so I’m adding and changing things regularly!)</p><h3>Inversion Thinking</h3><p>Inversion thinking is approaching a situation from the opposite end of what is the natural starting point. First, define the problem you are trying to solve. Now, how can you make that problem worse? I’m listing this first because I believe knowing what you shouldn’t do is much easier than knowing exactly what to do (and because this exercise is fun!).</p><blockquote>“Avoiding stupidity is easier than seeking brilliance” ~ Charlie Munger</blockquote><h3>The map is not the territory</h3><p>What makes a map useful is its reduction of time and space into a snapshot. A map is not all encompassing and your perspective is not all encompassing. Especially at the idea-stage we have many assumptions and many models we’ve constructed to help understand the problem and market. Explicitly pointing those out can help you find the gaps between your map and the territory. What are you simplifying without knowing it? Is it an accurate similifaction? How is it shaping your product or service?</p><h3>Circle of competence</h3><p>Some say “You don’t know what you don’t know”. But, what if we could know what we don’t know and use it to ask better questions and make better decisions. Charlie Munger is a big proponent of staying relatively within the bounds of what you know because it</p><h3>First Principles Thinking</h3><p>Start with the essentials. At some point in your entrepreneurship journey you will probably be a one person (or few people) team. This means wearing many hats and constantly having something to do. First principles thinking means simplifying your product or solution into a “Minimum Viable Product” or MVP and getting a solid foundation. This can also be applied to learning anything.</p><h3>Thought Experimenting</h3><p>Though experimenting is using your imagination to encourage speculation, change paradigms, and remove boundaries. It’s like a testing environment inside your mind! This is especially important in new spaces like machine learning or quantum computing where the future is less concrete.</p><h3>Second Order Thinking</h3><p>A second-order system is one described by responses. Using second-order thinking means you think about the responses, or consequences, or your 1st order decision. Then, you can evaluate the likeness of the response to make better longterm decisions.</p><h3>Bayesian Thinking</h3><p>Bayesian analysis is a method of statistical inference that combines prior knowledge with new evidence to guide the inference process. When we find new information about our market or target audience or investors we must use prior knowledge to better understand the new datapoint and adjust our thinking. When presented with new information it’s easy to put prior points into binaries — but it’s important to know that everything is true to some %.</p><h3>Oscar’s Razor / Law of Parsimony</h3><p>Simple explanations are more likely to be true than complicated ones. For an entrepreneur this means designing for simplicity. How do you know if something is “simple”? Find the path with the fewest assumptions. This also means your solution will be easier to execute and easier to test.</p><h3>Arbitrage</h3><p>If a good can be bought in one market and sold in another for profit it’s an arbitrage. The best ideas come at an intersection of industries or markets. Look outside your market for inspiration.</p><h3>Supply and Demand</h3><p>Supply and demand is the basic equation of economic life: a limited supply of neccessary goods and the competition for these goods. The factors of demand include:</p><ul><li>Social Proof</li><li>Incentives</li><li>Envy &amp; Jealousy</li><li>Feedback loops</li><li>Association</li><li>Commitment &amp; consistency</li></ul><p>How do these factors (and others) play into the mind of your target personas?</p><h3>Scarcity</h3><p>When resources are limited the mindset is desperate and needy. It often reveals the deepest human and market needs. Ask, “What decisions are consumers likely to make when resources are low in my market?”</p><h3>Mr. Market</h3><p>Mr. Market is an analogy for the stock market first introduced by Ben Graham. Warren Buffet explains, “Imagine … Mr. Market your friend who has emotional problems and will name very unstable prices. He also doesn’t mind being ignored. Mr. Market is there to serve you, not guide you. It is in his pocketbook, not his wisdom that you will find useful. You are free to ignore him or take advantage of him but it will be disastrous if you fall under his influence.”</p><p>There is a lot of learn from this analogy. One piece of advice I take from it is listen to people, the market, your consumers, etc. but don’t let them control you. Don’t fall under their influence. Be conscious.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7bb749ada58f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Determinism, Relativism, Absurdism]]></title>
            <link>https://dpatel1.medium.com/determinism-relativism-absurdism-e802b27766b9?source=rss-9afa37fccc4c------2</link>
            <guid isPermaLink="false">https://medium.com/p/e802b27766b9</guid>
            <category><![CDATA[time]]></category>
            <category><![CDATA[life-lessons]]></category>
            <category><![CDATA[space]]></category>
            <category><![CDATA[absurdism]]></category>
            <category><![CDATA[progress]]></category>
            <dc:creator><![CDATA[Dhara Patel]]></dc:creator>
            <pubDate>Fri, 06 Jan 2023 18:56:37 GMT</pubDate>
            <atom:updated>2023-02-04T19:29:14.671Z</atom:updated>
            <content:encoded><![CDATA[<p>… and how they teach us to live.</p><p>A basic understanding of space and time does not have to be complex. In this article I want to summarize large concepts and connect them to concrete actions you can take to make the most of your life. If anything is confusing or incorrect, please make a comment too — I would love to learn from it.</p><h4>Determinism</h4><p>The present moment can be defined as a slice in time — giving us the following 3D grid:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0u854WgFANm2diIKpkHerg.png" /></figure><p>We assign sequence to these “slices” by categorizing slices into 3 buckets: past, present, and future. This creates the everyday concept and feeling of “time”. I want to emphasize here that this is a perspective that we <em>created</em>. We define this sequence of slices according to our understanding of laws of physics at that time. For example, let’s take an apple falling from a tree. Each moment of the fall can be divided into its own slice in time and space. But, because we have laws of motion in place, we define one slice (apple on the tree) as before another slice (apple on the ground).</p><p>Newton said that because we know the laws that govern the change in these slices, we can determine the state of the past and present. This is called Determinism. This assumes there is only one absolute way to slice the present, one absolute order of slices, and one absolute way to determine the distance between slices. The apple can not move from the ground to the tree in this lawful world we created.</p><h4><strong>Relativism</strong></h4><p>Determinism has since been refuted by modern quantum theory. Quantum theory (this is a very broad summary and I’m not a quantum physician) says that everything exists and doesn’t exist. Why? Let’s turn this grid from above into a box. We exist <strong>within</strong> this box of space and time. Thus, our idea of space and time is limited to our experience in this box and limited to our understanding of the laws of physics. If we step outside of this box, our idea of time could be true or false or both or none.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*E56icOmnNDndt_EZJBo8_w.png" /><figcaption>The box of space and time that we exist IN which shapes our perception of what space and time is to us. We are experiencing it.</figcaption></figure><p>With this perspective, <strong>time no longer has direction</strong>. All slices simply exist without sequence. Our personal feeling and definition of time, therefore, is all relative. Which is why Einstein argues there isn’t a single way to slice the present — aka <strong>Relativism</strong>. But, this doesn’t mean that Relativism is outside of that box of space and time or that it is true or false or none or both. Every theory is bound by the environment it was invented in.</p><h4>So what?</h4><p>Uncertainty brings comfort. Absurdism accepts and is comforted by the idea that our existence is… absurd. It’s absurd in that there is no meaning, there is no hope. It is not special and special at the same time.</p><p>To find comfort in a meaningless world we must give up on trying to find meaning. We must accept that our understandings and explainations will never be certain. Inside our box of space and time, it is impossible for us to be certain about anything. We can understand only in human terms. Scary, right? No. Without a meaning, life prescribes us no appeal. This gives each of us room to create our own appeal. Find our own flame, our reason to be in this absurd world.</p><blockquote>“For the absurd, there is but only one life.” — Albert Camus, Myth of Sisyphus</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*kmnMUXFjBOs59EQd" /><figcaption>Photo by <a href="https://unsplash.com/@aldebarans?utm_source=medium&amp;utm_medium=referral">Aldebaran S</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>Resources</h4><ul><li>PBS Space Time on YouTube</li><li>A Brief History of Space and Time by Stephen Hawking</li><li>Myth of Sisyphus by Albert Camus</li><li>Naval, Podcast</li></ul><h4>Topics to dig depper</h4><ul><li>Zeno’s Paradox</li><li>Decision theoretic way of understanding probability</li><li>Quantum double slit experiment</li><li>Beginning of Infinity</li><li>Induction</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e802b27766b9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Reading for the weather]]></title>
            <link>https://dpatel1.medium.com/reading-for-the-weather-aa7f94d37b30?source=rss-9afa37fccc4c------2</link>
            <guid isPermaLink="false">https://medium.com/p/aa7f94d37b30</guid>
            <category><![CDATA[reading]]></category>
            <category><![CDATA[book-recommendations]]></category>
            <category><![CDATA[book-club]]></category>
            <category><![CDATA[readinglist]]></category>
            <dc:creator><![CDATA[Dhara Patel]]></dc:creator>
            <pubDate>Fri, 19 Mar 2021 15:53:29 GMT</pubDate>
            <atom:updated>2021-03-19T15:53:29.572Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*tT-VXzIlc5yBWJAA" /><figcaption>Photo by <a href="https://unsplash.com/@eddrobertson?utm_source=medium&amp;utm_medium=referral">Ed Robertson</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>I spent my childhood at the public library. Every week my siblings and I would raid the childrens’ section, leaving with bags and bags of books. Since then, my taste in books has gotten a bit more sophisticated. I am happiest when I am reading for the weather. When I read a grey book in the fall or a bright book in the spring I feel one with the world.</p><p>Here’s what you should read each month to read for the weather:</p><h3>1. January</h3><p>January has the same cold, but it’s a different kind of cold. It’s new and fresh but long and dark. <em>A Little Life </em>matches that emotional energy. The story follows four male friends as they grow through college and become young adults. What makes it special is Hanya Yanagihara’s abilty to create complexity of the characters’ relaionship with sexual identity.</p><h3>2. February</h3><p>February disguises the brutal cold with love, friendship, and slightly brighter days. Their Eyes Were Watching God by Zora Neale Hurston will bring you to tears again and again. The story follows Janie Crawford, a black woman in the 20th century, through her journey of self-discovery and love. Despite her being so different from me, I couldn’t help but feel her sorrow as if it was mine.</p><h3>3. March</h3><p>March is the first hint of spring. Some days rainy and others bright and summery. <em>Braiding Sweetgrass </em>is<em> </em>Robin Wall Kimmerer’s world as an American ecology professor and a Native American women. It’s the perfect spring read because it rings of sweet rain and new beginnings. Her words will leave you with a new appreciation for our ecosystem.</p><h3>4. April</h3><p>April brings chaos. It’s finally spring but the proximity to summer is nerve-wrecking. <em>Story Of My Teeth,</em> originally written in Spanish, is the perfect aid to chaos. It chronicles the life of Gustavo “Highway” Sánchez Sánchez as he uses his charm to collect historical artifacts for aution — one of them being a set of teeth that once belonged to Marilyn Monroe.</p><h3>5. May</h3><p>The weather is finally sunny and bright, allowing for more picnics, walks, and outdoor reading. May is a time for reflection and understanding others. That is why I recommend <em>The Good Immigrant</em>, a collection of 26 writters’ reflections on living in America as first and second generation citizens. The ability to capture voices from so many cultures is what makes this read special.</p><h3>6. June</h3><p>June is bright and fresh. It’s the beginning of summer plans and everything is new. <em>Americanah</em> by Chimamanda Ngozi Adichie is a great follow up to June’s read that also parallels this newness. It chronicals a Nigerian woman (Ifemelu)’s life as she immigrates to America and navigates what it means to be “Americanah.” This is a must read because of the impecible job Adichie does in describing what it feels like to be an immigrant in America.</p><h3>7. July</h3><p>In July, the heat has become normal. Summer parties and mid-day swims are common and students feel nostalgic as they realize the closeness of the coming academic year. Tara Westover’s memoir <em>Educated</em> highlights the power of knowledge by showing us how Westover left her Mormon left behind to go to college in the pursuit of something greater.</p><h3>8. August</h3><p>August marks the end of summer. We spend the month in constant shock of how fast life is moving. <em>Einstien’s Dreams</em> is the perfect aid to this confusion. Each chapter is a new world in which time works according to a different law. My favorite chapter describes a world in which every day our memory resets and people keep of a book of their lives — some choose to read their book every day while others choose to live every day anew.</p><h3>9. September</h3><p>September is almost perfect. It’s not too hot and it’s not too cold. We can use this perfection to reflect on how advanced our civilization is. If you haven’t already read it, you must read <em>Brave New World</em> in September. The renowned Aldous Huxley describes the current and future state of our ever-growing world with such precision. This book will forever change your outlook on the future of the human race.</p><h3>10. October</h3><p>October marks the start of cloudy days and windy nights. Ray Bradbuty’s <em>Something Wicked This Way Comes</em> is the perfect aid to October’s spooky energy. The dark fantasy is about two 13 year-old boys and a traveling carnival that brings about havic on their small Illinois town. Bradbury’s mystical and whispy writting makes this book hard to but down.</p><h3>11. November</h3><p>November is the beginning of long, dark nights and breaking in winter coats. It forces us to consider the relationships we’ve made and the people that have impacted us. Although it was written nearly a decade ago, <em>The Great Gatsby</em> is hard to put down and easy to relate to. The novel chronicles the life of Long Island millionarie Gatsby as he searches for false love.</p><h3>12. December</h3><p>December is a time of reflection on the year. The Day the Sun Died is a story of a village whose residents begin sleep walking and live out their surpressed desires. The village exists the lives the next day as if the sun never sets. What makes this read special is Yan Lianke’s ability to use tragic poise and political resonance to write a creepy fabel-like story.</p><p>This is the second post of a challenge I am doing — one post a week for the month of March. I want to challenge myself to think deeply about a topic of importance for at least a few hours a week. If you catch me missing a week, I’ll buy you a coffee!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=aa7f94d37b30" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Engineering for a better world.]]></title>
            <link>https://dpatel1.medium.com/engineering-for-a-better-world-5725db3dc904?source=rss-9afa37fccc4c------2</link>
            <guid isPermaLink="false">https://medium.com/p/5725db3dc904</guid>
            <category><![CDATA[engineering]]></category>
            <category><![CDATA[engineering-colleges]]></category>
            <category><![CDATA[education-reform]]></category>
            <category><![CDATA[education]]></category>
            <category><![CDATA[impact]]></category>
            <dc:creator><![CDATA[Dhara Patel]]></dc:creator>
            <pubDate>Sun, 07 Mar 2021 18:57:51 GMT</pubDate>
            <atom:updated>2021-03-07T18:57:51.586Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*lnmUL3sxYosP4Ojf" /><figcaption>Photo by <a href="https://unsplash.com/@thisisengineering?utm_source=medium&amp;utm_medium=referral">ThisisEngineering RAEng</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Engineering is often understood as using science to make “cool things.” But, it has always meant so much more to me. Engineering is a way of bettering the world. Engineering is a way of solving problems for others. To me, engineering is an all emcompassing tool that can change lives.</p><p>This is why engineering cannot live in a bubble. Because of its importance and impact, it is not enough to simply know how to code up a neural network or wire up an RC filter. It is our responsibility as engineerings to use what we learn to help others. And, in order to do that, we need to understand the world around us through human-centered design and ethical priciples.</p><p>In the traditional engineering cirriculum, first years will sit through lectures of math, physics, and computer science. These dense technical classes are neccessary — don’t get me wrong. But, they fail to teach students how they have the change to change the world. This drives away the students looking to make a more meaningful impact in their careers and these are the students that would make the best engineers! Luckily, I got the opportunity to go to <a href="https://www.olin.edu/">Olin College of Engineering</a>, a place that emphasizes the impact engineers can have on humanity.</p><p>That responsibility is daunting. But, if you apply it to a cause you are passionate about or something you are determined to change it feels less scary. For me, that something is education. I have experienced first hand what motivating and supporting teachers can do and it is incredibly heart-breaking that very few kids feel powerful enough to know that they can use what they learn to shape the world in their eyes. When I think about this problem, I am pumped with adenaline and a sudden burst of motivation.</p><p>Every engineer needs that something that they want to change because without it it’s hard to see the importance of the engineering cirriculum. That is why (along with technical material) every engineering student needs to know how they can apply what they are learning to a more meaningful cause.</p><p>This is the first post of a challenge I am doing — one post a week for the month of March. I want to challenge myself to think deeply about a topic of importance for at least a few hours a week. If you catch me missing a week, I’ll buy you a coffee!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5725db3dc904" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Virtual Reality in Education]]></title>
            <link>https://dpatel1.medium.com/virtual-reality-in-education-14cf3fc2b9e7?source=rss-9afa37fccc4c------2</link>
            <guid isPermaLink="false">https://medium.com/p/14cf3fc2b9e7</guid>
            <category><![CDATA[equality]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[education]]></category>
            <category><![CDATA[vr]]></category>
            <category><![CDATA[equal-opportunity]]></category>
            <dc:creator><![CDATA[Dhara Patel]]></dc:creator>
            <pubDate>Wed, 30 Sep 2020 14:09:17 GMT</pubDate>
            <atom:updated>2020-09-30T14:09:17.159Z</atom:updated>
            <content:encoded><![CDATA[<p>VR is about to change the way we learn forever.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*C3QlaqSK9uKshxBt" /><figcaption>Photo by <a href="https://unsplash.com/@thepaintedsquare?utm_source=medium&amp;utm_medium=referral">Jessica Lewis</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Education is the strongest driver of social mobility. But, not everyone gets the same education. Privileged families will stop at nothing to send their children to the best schools with the best teachers. Low-income families do not have that choice. They are forced to send their children to the public school in their disctrict — which tends to have more students in need of extra help, fewer guidance counselors, tutors, and psychologists, lower-paid teachers, more dilapidated facilities and bigger class sizes.</p><p>Luckily, this digital age brings opportunities to equlize the playing field and enable better learning with the help of technology for a low cost. Right now schools are using technology as a powerful tool to retain facts. But, it can do so much more.</p><p>Virtual reality can be used to further enhance learning by engaging students. Being immersed in what you’re learning sparks curiosity and motivates you to keep exploring. Imagine a history class that takes field trips to Machu Picchu and the Pyramids of Giza. Imagine a science class that has virtual lab experiments.</p><p>In the midst of a pandemic, reopening schools will bring many risks with it. Virtual reality will allow us to put educators and students in the same room safely. Over the past few months, Zoom has become the new normal for millions of students across the country. There is no personal or physical interaction, stunting mental growth. Fundamental capabilities such as teamwork, communication, organization, creativity, adaptability, and punctuality are not being learned.</p><p>Imagine a virtual classroom where teachers teleport into the VR world and guide students through their experiences. In this virtual world, students would be able to interact more personally with their peers and professors.</p><p>We are only at the dawn of virtual reality and must expect challenges. We need to be aware of possible implict implications. We need to make active efforts to make VR technology affordable and accessible for all.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=14cf3fc2b9e7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introduction to Apache Solr]]></title>
            <link>https://dpatel1.medium.com/introduction-to-apache-solr-323aa8f6f04c?source=rss-9afa37fccc4c------2</link>
            <guid isPermaLink="false">https://medium.com/p/323aa8f6f04c</guid>
            <category><![CDATA[solr-tutorial]]></category>
            <category><![CDATA[search-engines]]></category>
            <category><![CDATA[learn]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[database]]></category>
            <dc:creator><![CDATA[Dhara Patel]]></dc:creator>
            <pubDate>Tue, 25 Aug 2020 19:04:27 GMT</pubDate>
            <atom:updated>2020-08-25T19:04:27.643Z</atom:updated>
            <content:encoded><![CDATA[<p>A complete walkthrough to creating your own seach platform in mintues!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*m3J7JQlUXCycRiSa" /><figcaption>Photo by <a href="https://unsplash.com/@markusspiske?utm_source=medium&amp;utm_medium=referral">Markus Spiske</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>What is Apache Solr?</h3><p>Apache Solr is an open-source search algorithm that is known for being fast and reliable. Solr provides search capabilities through HTTP requests at near real-time. Solr is a document-oriented search engine, meaning it uses request handlers to ingest data from documents of various types (XML, CSV, databases, MS Word, PDF). This allows for much more complicated search queries than most search algorithims.</p><p>Apache Lucene more recently released a open-source search engine that extends Lucene’s powerful indexing and search functionalities. Compared to Solr, it has better inherent scalability and a design optimal for cloud deployments. Check out <a href="https://solr-vs-elasticsearch.com/">this</a> feature smackdown for a more detailed comparison of the two search engines!</p><p>There are endless applications for Solr. Companies like Instagram, Netflix, DuckDuckGo, and Aol all use Apache Solr. I use it to perform complex seaches on my personal documents, school notes, and other files!</p><h3>Installing Solr</h3><p>Let’s get to the fun part! First, you’ll need to make sure you have Java 1.8 (or higher) installed:</p><pre><em>$</em> java -version<br>java version &quot;1.8.0_60&quot;<br>Java(TM) SE Runtime Environment (build 1.8.0_60-b27)<br>Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)</pre><p>Now, you can install Apache Solr. Go to <a href="https://lucene.apache.org/solr/downloads.html">the Solr website</a> and download the file appropriate for your operating system. Extract the Solr distribution:</p><pre><em>$ </em>cd ~/ <em><br>$</em> tar zxf solr-x.y.z.tgz</pre><h3>Launch Solr</h3><p>Now, you can launch Solr using the commands below and then open a port by typing <a href="http://localhost:8983/">http://localhost:8983/</a> into your browser.</p><pre><em>$ </em>cd /solr-x.y.z/solr<em><br>$</em> bin/solr start </pre><pre>*** [WARN] *** Your open file limit is currently 1024.  <br> It should be set to 65000 to avoid operational disruption. <br> If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh<br>*** [WARN] ***  Your Max Processes Limit is currently 62866. <br> It should be set to 65000 to avoid operational disruption. <br> If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh<br>Waiting up to 180 seconds to see Solr running on port 8983 [|]  <br>Started Solr server on port 8983 (pid=31325). Happy searching!</pre><p>If you receive <em>Permission Denied</em>, run the command again with bash infront.</p><h3>Adding Documents</h3><p>You’ve created a search server that will contain collections of documents, or sets of data. A document can be written in JSON, XML, and many other data-intercange formats and is composed of fields that are specifc, pre-defined pieces of information of any field type. A document’s fields are extracted into an index, which is consulted during a search.</p><p>In order to add documents, we must first create a core. A core is a running instance of a Lucene index that contains all the Solr configuration files required to use it. Run the line below to create a core named <em>test</em>:</p><pre><em>$ </em>bin/solr create -c test</pre><pre>WARNING: Using _default configset with data driven schema functionality. NOT RECOMMENDED for production use.<br>         To turn off: bin/solr config -c test -p 8983 -action set-user-property -property update.autoCreateFields -value false</pre><pre>Created new core &#39;test&#39;</pre><p>Now, we can add documents to our Solr server. But first, a bit about documents. A document is what the user is searching for. Solr finds documents that match the queries through the field values that are specified for every document. For now we can add Solr’s example documents that come with the installation.</p><pre><em>$</em> bin/post -c test example/exampledocs/*.xml</pre><pre>java -classpath /home/dpatel1/solr-8.5.2/solr/dist/solr-core-8.5.2-SNAPSHOT.jar -Dauto=yes -Dc=test -Ddata=files org.apache.solr.util.SimplePostTool example/exampledocs/gb18030-example.xml example/exampledocs/hd.xml example/exampledocs/ipod_other.xml example/exampledocs/ipod_video.xml example/exampledocs/manufacturers.xml example/exampledocs/mem.xml example/exampledocs/money.xml example/exampledocs/monitor2.xml example/exampledocs/monitor.xml example/exampledocs/mp500.xml example/exampledocs/sd500.xml example/exampledocs/solr.xml example/exampledocs/utf8-example.xml example/exampledocs/vidcard.xml<br>SimplePostTool version 5.0.0<br>Posting files to [base] url <a href="http://localhost:8983/solr/test/update">http://localhost:8983/solr/test/update</a>...<br>Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log<br>POSTing file gb18030-example.xml (application/xml) to [base]<br>POSTing file hd.xml (application/xml) to [base]<br>POSTing file ipod_other.xml (application/xml) to [base]<br>POSTing file ipod_video.xml (application/xml) to [base]<br>POSTing file manufacturers.xml (application/xml) to [base]<br>POSTing file mem.xml (application/xml) to [base]<br>POSTing file money.xml (application/xml) to [base]<br>POSTing file monitor2.xml (application/xml) to [base]<br>POSTing file monitor.xml (application/xml) to [base]<br>POSTing file mp500.xml (application/xml) to [base]<br>POSTing file sd500.xml (application/xml) to [base]<br>POSTing file solr.xml (application/xml) to [base]<br>POSTing file utf8-example.xml (application/xml) to [base]<br>POSTing file vidcard.xml (application/xml) to [base]<br>14 files indexed.<br>COMMITting Solr index changes to <a href="http://localhost:8983/solr/test/update">http://localhost:8983/solr/test/update</a>...<br>Time spent: 0:00:00.717</pre><p>If you go back to your localhost network and open the test core overview page, you’ll see that it contains documents!</p><p>To add your own documents, follow the following format. The document you want to add should be located in ~/bin/post.</p><pre><em>$</em> bin/post -c &lt;core_name&gt; &lt;file_name&gt;.&lt;file_type&gt;</pre><h3>Queries — Let’s do some searching!</h3><p>Queries are what is sent to a<em> </em><strong>request handler</strong>, a plug-in that defines the logic used to process a search request. The request handler calls a <strong>query parser</strong> that interprets the terms and parameters in the query. A query input contains terms to search for, parameters for fine-tuning the query, parameters for controlling the response presentation. Solr’s default query parser is <a href="https://lucene.apache.org/solr/guide/6_6/the-standard-query-parser.html#the-standard-query-parser">Standard Query Parser</a>.</p><p>There are many types of searches you can conduct. Here are a few:</p><pre>Wildcard   |     ?    <em>|  S</em>upports single and multiple character matches <br>____________________________________________________________________</pre><pre>Fuzzy      |     ~     |  Discovers terms that are similar to the specified                                                                term without exact matches<br>____________________________________________________________________</pre><pre>Proximity  |     ~#    |  Looks for terms that are within a given distance (distance = number of term movements)<br>____________________________________________________________________</pre><pre>Range      | [# TO #] |  Finds documents that fall within a numerical or non-numerical range for the specified field(s). You can also use () to signify exclusive values.</pre><p>We’ll be using the following parameters for basic searching. There are many more parameters that deal with more complicated features that you can find on the specific query pages on Apache Lucene. Here are a few of the most commonly used parameters:</p><pre><em>defType    ||   </em>Selects the query parser to be used(default=lucene) <br>____________________________________________________________________</pre><pre>sort       ||   Sorts responses based on response score or other characteristic<br>____________________________________________________________________</pre><pre>rows       ||   Defines maximum number of documents viewed at a time<br>____________________________________________________________________</pre><pre>fq         ||   Restricts the superset of documents that can be returned<br>____________________________________________________________________</pre><pre>fl         ||   Defines the information included in a query response</pre><p>Let’s say we are looking for any document with the word “green” in its name field. You would type the following into your browser. The “select” identifies the request handler for the queries. We are doing a wildcard search which is represented by the “?”. The “q” identifies the query itself and represents standard query syntax. And “name:” tells Solr to look for <em>green</em> in the name field.</p><p><a href="http://localhost:8983/solr/gettingstarted/select?q=name:black">http://localhost:8983/solr/mycorename/select?q=name:green</a></p><p>This is a simple example. A level up is searching for a phrase. Let’s say we are looking for any mention of any type of solr analytics. You can do that with proximity search:</p><pre>http://localhost:8983/solr/mycorename/select?q=text:&quot;solr analytics&quot;~1</pre><p>This will search the text of every document for every mention of the words solr and analytics within a word of each other. For example, the following phrases would qualify: <em>solr faceted analytics</em>, <em>solr analytics</em>, and <em>analytics solr</em>.</p><p>Hope you’ve had fun creating your very own search engine! There are endless ways to make it your own. I’d love your feedback on this tutorial and to hear about how you are using Solr search!</p><p>Happy Searching!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=323aa8f6f04c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[On Forward Thinking.]]></title>
            <link>https://dpatel1.medium.com/on-forward-thinking-e08ac24a3425?source=rss-9afa37fccc4c------2</link>
            <guid isPermaLink="false">https://medium.com/p/e08ac24a3425</guid>
            <category><![CDATA[hopes-and-dreams]]></category>
            <category><![CDATA[optimism]]></category>
            <category><![CDATA[pandemic]]></category>
            <category><![CDATA[life-lessons]]></category>
            <category><![CDATA[pessimism]]></category>
            <dc:creator><![CDATA[Dhara Patel]]></dc:creator>
            <pubDate>Thu, 18 Jun 2020 13:50:54 GMT</pubDate>
            <atom:updated>2020-06-18T13:50:54.428Z</atom:updated>
            <content:encoded><![CDATA[<h4>Remember, life will go on.</h4><p>Life will go on. This simple saying holds so much meaning. It says you are not the center of the universe. It says you have this one life. <strong>It says there is nothing to do except move forward.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0MPl2Ar1y2utu5TC" /><figcaption>Photo by <a href="https://unsplash.com/@kaurmartin?utm_source=medium&amp;utm_medium=referral">Kaur Martin</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>It tells me not to get caught up the small things. It tells me that no matter how bad things may feel now, they will get better, then worse again, then even more worse, then better again, then worse again. It tells me I cannot try to control everything because <strong><em>life will go on as it wants</em></strong>.</p><p>Now more than ever, in the mist of a global pandemic, it is hard to stay positive. No one knows when things will be ‘normal’ again. At a time like this, it is important to know this world of isolation and fear is not forever. <strong><em>Life will go on.</em></strong></p><p>People who are hopeful are often seen as ignorant. There is wisdom in pessimissim, right? There is wisdom in seeing the glass half empty. But, when we begin to give up, pessimissim is no longer wise. Constantly dwelling on what you don’t have will only make you more pitiful and sad. Instead, realize what you don’t have and think about what you could do to change. Move forward. Because, <strong><em>life will go on without you.</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*a1q3qN3ULx6Pd8Hc" /><figcaption>Photo by <a href="https://unsplash.com/@ohleighann?utm_source=medium&amp;utm_medium=referral">Leighann Blackwood</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Optimisim also has its pitfalls. It covers our view of the world in sprinkles, making it hard to see reality. We dream of prince(ss) charming, tall castles, and bountiful feasts as if any of it were going to come true. Optimisim builds idealistic expectations that are bound to be broken and allows us to ignore our problems.</p><p>There is a middle ground we must strive for. We must learn when we should exceed to — rather than protest — the demands of reality. We should see the good, the bad, the happy, the sad, the best, and the worst of our lives. <strong><em>Only then do we learn how to move forward.</em></strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e08ac24a3425" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>