<?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 Ali Reubenstone on Medium]]></title>
        <description><![CDATA[Stories by Ali Reubenstone on Medium]]></description>
        <link>https://medium.com/@alireubenstone?source=rss-4a20a3347604------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Umap0mwgh8y0eVQnZ9xTXg.jpeg</url>
            <title>Stories by Ali Reubenstone on Medium</title>
            <link>https://medium.com/@alireubenstone?source=rss-4a20a3347604------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 22:43:29 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@alireubenstone/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[TwoNumberSum Conundrum]]></title>
            <link>https://medium.com/@alireubenstone/twonumbersum-conundrum-452307b6e344?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/452307b6e344</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[coding]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Wed, 10 Jul 2019 15:57:33 GMT</pubDate>
            <atom:updated>2019-07-10T15:57:33.133Z</atom:updated>
            <content:encoded><![CDATA[<p>I’m back with the usual…yes, two ways to solve the same algorithm…one way is in double for loop land and the other uses a hash map.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*y94QyTtoqqm7i6VtmZGspw.jpeg" /></figure><p>OK — Enough excitement. Let’s get down to the question:</p><h4>Write a function that takes in an array of distinct integers and an integer representing a target sum.</h4><h4>If any 2 numbers in the array sum to the target sum, return those numbers in a sorted array.</h4><h4>If no 2 numbers sum up to the target sum, the function should return an empty array.</h4><h4><strong>Sample input: [2, 5, 9, -1], 8</strong></h4><h4><strong>Sample output: [-1, 9]</strong></h4><p>Since I don’t want to just spoon feed the answer, I am going to talk through both solutions as though I were white boarding instead of just copy/pasting a gist.</p><h3>Double ‘for loop’ way:</h3><ul><li>I would begin by creating a for loop to track the first number which I would save to a variable inside this for loop</li><li>The I’d create the second for loop to track the second number and save that number to a variable as well</li><li>Then, I’d create an if statement to check if those two number sum to the target sum…if so, I would return the two numbers in a sorted array</li><li>Otherwise, I’d return an empty array!</li></ul><p><strong>Takeaways:</strong></p><blockquote>Time Complexity: O of n squared because there are two for loops (we can do better than this!)</blockquote><blockquote>Space Complexity: Constant</blockquote><h3>Hash map way:</h3><ul><li>Declare an empty hash</li><li>Run a for loop over the length of the array (yes we have just one for loop in this solution) and inside this for loop declare a variable that is the difference between the target sum and the current number ==&gt; we want to do this because if this number exists in the hash, we know we have found a pair that sums to the target sum!</li><li>Check if the hash contains that number, and if so, return the two numbers in a sorted array</li><li>If the hash doesn’t contain that number, add it as a key to the hash</li><li>Otherwise, return an empty array!</li></ul><p><strong>Takeaways:</strong></p><blockquote>Time Complexity: O of n where n represent the length of our input array and we only traverse this array one time → after that, we just access values in the hash which is done in constant time</blockquote><blockquote>Space Complexity: O of n as well since we are adding values to the hash which nears n values</blockquote><p>I personally enjoy completing these problems first in the less efficient way, and then in the more efficient way. In doing so, I am confident that I can solve the algorithm with the “brute force” approach which usually involves more fundamental knowledge, i.e., nested for loops. After solidifying that approach, I look for more efficient solutions.</p><p>I hope this helps!</p><p><strong>Sources</strong>:</p><p><a href="https://www.algoexpert.io/">https://www.algoexpert.io</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=452307b6e344" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Two Ways to Solve the HackerRank Staircase Problem in Javascript]]></title>
            <link>https://medium.com/@alireubenstone/two-ways-to-solve-the-hackerrank-staircase-problem-in-javascript-8036d2254567?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/8036d2254567</guid>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[bootcamp]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Tue, 09 Jul 2019 21:41:22 GMT</pubDate>
            <atom:updated>2019-07-09T21:41:22.479Z</atom:updated>
            <content:encoded><![CDATA[<p>If you have studied for software development interviews, then I am sure you have, or will eventually run into the “Staircase” problem where…</p><ul><li>n is an integer denoting the size of the staircase</li><li>print a staircase of size n using # symbols and spaces and make it right-aligned</li><li>Example: n = 4 should print:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/202/1*Ots5aUovvVof9fhSk2POlQ.png" /><figcaption>Its base and height are both equal to n and the last line is not preceded by any spaces.</figcaption></figure><p>At first, I didn’t know where to start so I drew out a staircase with an <strong>n = 3 </strong>to see if I could identify the patterns and/or relationships between n and the number of spaces in the row. The following is a real picture of the whiteboard that I used to make this discovery:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fhL4jkduwxP78wNyUtEFqg.jpeg" /></figure><blockquote>As you can see…</blockquote><blockquote>The first row has <strong>n-1</strong> spaces before the <strong>#</strong>, the second row has <strong>n-2</strong> spaces, and the last row has <strong>zero</strong> spaces.</blockquote><blockquote>In terms of the number of hashes (#) in each row, they simply increment by 1 until the row number equals <strong>n</strong>, in this case, 3.</blockquote><p>At this point, I still wasn’t totally sure on how to proceed, but my instincts told me I would need to use <em>at least</em> one for loop — if not 3 — in order to print this out correctly: an outer for loop to keep track of the number of rows, and then two inner for loops to keep track of the spaces and hashes in each row…</p><p><strong>Solution A: </strong><em>It works but it ain’t elegant or efficient…</em></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d8f8424609a4fbc36c8adc278d0c8263/href">https://medium.com/media/d8f8424609a4fbc36c8adc278d0c8263/href</a></iframe><p>Now that’s a lot of <strong>for loops</strong>. And this method of solving the problem is very error prone because of all of the variables in each loop…I knew there had to be a better way.</p><p>This is when I discovered Javascript’s <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat">String.prototype.repeat()</a>.</p><h3>Please see <strong>Solution B</strong>:</h3><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4d029b662fc821bcaaca5789621c9ce8/href">https://medium.com/media/4d029b662fc821bcaaca5789621c9ce8/href</a></iframe><p>I am no wizard though…it took some time for me to understand how to use<strong> .repeat()</strong> before I was able to pass the tests on HackerRank again. But it was a great lesson on how to read documentation and then apply it.</p><p>I look forward to using <strong>.repeat()</strong> in more ways!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8036d2254567" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Meet JSX, JavaScript’s Cool Sibling]]></title>
            <link>https://medium.com/@alireubenstone/meet-jsx-javascripts-cool-sibling-dbc1aa2e557c?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/dbc1aa2e557c</guid>
            <category><![CDATA[jsx]]></category>
            <category><![CDATA[javascript-development]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Mon, 10 Dec 2018 00:24:33 GMT</pubDate>
            <atom:updated>2018-12-10T15:29:45.962Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/560/1*2TN6bm93jKUa8M0dmF8qsQ.png" /></figure><h3>What is JSX?</h3><p>JSX looks <em>a lot</em> like HTML, but guess what? It’s not HTML. Technically, it’s JavaScript. Hence, the name JSX…<strong>J</strong>ava<strong>S</strong>cript e<strong>X</strong>tension…</p><h3>But, Why JSX?</h3><p>JSX enables us to write HTML-like code inside of JavaScript. However, browsers do not understand JSX code, which is why we use tools like Babel to turn JSX in to JS.</p><p>While JSX is not required to use when writing React, it is highly recommended for two reasons:</p><ol><li>It makes code less verbose.</li><li>It makes visualizing the UI a lot simpler.</li></ol><p>For example:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/0ade59b45fd24a4471149ce8fbb6aea0/href">https://medium.com/media/0ade59b45fd24a4471149ce8fbb6aea0/href</a></iframe><h3>Behind the scenes…</h3><p>Each JSX element created (the &lt;div&gt; above for example) is just “syntactic sugar” for calling <strong>React.createElement() </strong>which takes in the following as arguments: the type of element we are creating, an object containing properties, aka, “props” that get passed to the component, the children of that component.</p><h3>JSX vs. HTML</h3><p>The four main differences between JSX and HTML are:</p><h4>Inline styling</h4><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c7d8468a3de86102ec65247ba8646573/href">https://medium.com/media/c7d8468a3de86102ec65247ba8646573/href</a></iframe><ul><li>The outer curly braces indicate a reference to a JavaScript variable inside of our JSX.</li><li>The inner curly braces reference a JavaScript object.</li></ul><h4>Naming CSS Classes</h4><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a26824d44a216edbba254c88f476031a/href">https://medium.com/media/a26824d44a216edbba254c88f476031a/href</a></iframe><ul><li>Since “class” is a keyword in JavaScript, and JSX is an <em>extension </em>of JavaScript, React must use <strong>className</strong> instead of <strong>class</strong>.</li></ul><h4>for → htmlFor</h4><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/1745f0cffd18840cba3052da67d7e789/href">https://medium.com/media/1745f0cffd18840cba3052da67d7e789/href</a></iframe><ul><li>To prevent the browser from thinking “for” is referencing a JS for loop.</li></ul><h4>Referencing JS Variables</h4><p>In plain old HTML…you essentially “hard code” what will render to the DOM.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/735/1*0eiygzEnpK35-MLXbvxV1A.png" /></figure><p>Whereas in JSX, you can make use of variables and then pass those to what will render to the DOM.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/889/1*wcHhpfxdu3VKdtBeUkLpmw.png" /></figure><p>So, all in all, JSX seems super helpful to developers. Then, why are there still haters? A prolific software developer once said,</p><blockquote>And the haters gonna hate, hate, hate, hate, hate <br>JSX, just gonna shake, shake, shake, shake, shake</blockquote><p>Well, that’s because, as software developers, we like to abide by something called the <strong>separation of concerns</strong>, which means that the logic, the view, the styling, etc. should be in <em>separate files</em>. JSX turns this idea on its head.</p><p>But, think about it; JSX was made for a reason…that reason being to help the developer. So even if JSX feels wrong or yucky at first, I’d recommend to keep using it since it makes writing React a lot easier and more readable.</p><p><strong>Sources:</strong></p><ul><li><a href="https://reactjs.org/docs/introducing-jsx.html">Introducing JSX - React</a></li><li><a href="https://codeburst.io/understanding-jsx-9bfcdc7fe01b">Understanding JSX</a></li><li><a href="https://reactjs.org/docs/react-without-jsx.html">React Without JSX - React</a></li><li><a href="https://medium.com/@zacharykuhn/you-re-going-to-hate-jsx-595c5b64f8a7">You’re Going to Hate JSX</a></li></ul><p><a href="https://www.udemy.com/react-redux/">https://www.udemy.com/react-redux/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=dbc1aa2e557c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pessimism & Optimism…in rendering]]></title>
            <link>https://medium.com/@alireubenstone/pessimism-optimism-in-rendering-b78c20c605db?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/b78c20c605db</guid>
            <category><![CDATA[ux]]></category>
            <category><![CDATA[rendering]]></category>
            <category><![CDATA[http-request]]></category>
            <category><![CDATA[ui]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Tue, 27 Nov 2018 02:24:05 GMT</pubDate>
            <atom:updated>2018-11-27T02:47:18.254Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>In terms of human-computer interaction, <strong>100 milliseconds</strong> is the optimal response time for a simple interaction.</blockquote><blockquote>This is getting into the range of one of the fastest unconscious actions the human body can perform — an eye blink.</blockquote><h3>Human-Computer Interaction (HCI)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/437/1*DQbLpBcTJ9sxhqYnZdEWtg.jpeg" /></figure><p>Researchers in this field study the interactions between people (users) and computers. They also design technology that lets humans interact with computers in new ways.</p><blockquote>In most applications/websites, “users are constantly performing operations that require some sort of communication with a server”.</blockquote><blockquote>This communication can include loading content, sending a message, clicking a like button, etc.</blockquote><h3>So, what makes this even possible?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/640/1*e_BksFbcdB45NPKeTTQK3A.jpeg" /></figure><blockquote>Well, not exactly lies... but there is a little deception involved via manipulations of the user interface.</blockquote><h3>Enter optimistic rendering…</h3><p>Simply put, <strong>rendering </strong>is the act of loading a web page. And, as I stated above, users expect websites to render <em>very quickly…as fast as an eye blink.</em></p><p>The thing is, that’s not actually possible; when you actually consider ALL of the actions that must take place.</p><p>For example:</p><ol><li>User presses submit to create a post on a social media website.</li><li>That request is sent to the server.</li><li>The server must send back the response (hopefully it’s successful).</li><li>Render the view the user is expecting.</li></ol><p>This could take up to three seconds…That’s <strong><em>three</em></strong><em> </em>times the optimal response time for a simple interaction.</p><p>So, many websites deceive users by immediately skipping to step <strong>4. Render the view the user is expecting</strong> <em>— </em>this makes a website <em>appear</em> extremely fast even though the actual data has not been sent back from the server.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0sLI6XAPOwrJfm1NglB1gw.gif" /></figure><h3>Why do users accept this deception?</h3><p>Well, could you imagine waiting and waiting for a Like button to register? NO! HCI researchers will tell you that humans prefer speed over almost anything!</p><blockquote>78% of consumers feel negative emotions as a result of slow or unreliable websites.</blockquote><blockquote>Moreover, <a href="http://www.marketwired.com/press-release/tealeaf-announces-new-mobile-transaction-research-conducted-harris-interactive-shows-1419058.htm">according to a survey</a> conducted by Harris Interactive for Tealeaf, 23% of users confess to cursing at their phones, 11% have screamed at them, and a whole 4% have actually thrown their phone when experiencing a problem with an online transaction.</blockquote><blockquote>Delays are among those problems.</blockquote><p>Also…companies are not taking a huge risk by “banking” on this response to come back OK. Let’s say that the server’s response was NOT OK…failure to implement a “Like” action is not a big deal.</p><h4>However, can you think of cases where the failure to implement an action <em>would</em> be a big deal?…</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*X6s1M9cW-PjJ06bSWjeS6w.jpeg" /></figure><h3>That’s why Pessimistic rendering must exist!</h3><p>Although users prefer speedy rendering, there are certain scenarios in which it would be dangerous to “deceive” users that an action occurred before it was actually confirmed by the server.</p><p>And HCI studies show that users actually “accept” that specific actions will take longer, especially those actions involved with very important personal data.</p><p>Take my rent payment app…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1008/1*dARIXm4RWhRE0LlDpIiFwg.gif" /></figure><p>Yea, that spinning circle isn’t fun, but I’d prefer to know that my rent payment went through FOR SURE. Otherwise, if it optimistically rendered and the response DID NOT come back OK, I might close my browser before the error comes back and never know that I didn’t actually pay my rent…not good! I smell lawsuits.</p><p>While it may seem like a no-brainer to always use optimistic rendering, there are a few critical use cases for pessimistic rendering. These are scenarios where receiving the state of the response outweighs the need for speed in the UI.</p><p><strong>SOURCES:</strong></p><ul><li><a href="https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction"><strong>https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction</strong></a></li><li><a href="https://academy.realm.io/posts/360-andev-2017-joe-birch-pessimistic-android-ui/"><strong>https://academy.realm.io/posts/360-andev-2017-joe-birch-pessimistic-android-ui/</strong></a></li><li><a href="https://medium.com/@duncandevs/ui-rendering-optimistic-vs-pessimistic-e8e0f4df264"><strong>https://medium.com/@duncandevs/ui-rendering-optimistic-vs-pessimistic-e8e0f4df264</strong></a></li><li><a href="https://www.smashingmagazine.com/2016/11/true-lies-of-optimistic-user-interfaces/"><strong>https://www.smashingmagazine.com/2016/11/true-lies-of-optimistic-user-interfaces/</strong></a></li><li><a href="https://www.computer.org/csdl/proceedings/afips/1968/5072/00/50720267.pdf"><strong>https://www.computer.org/csdl/proceedings/afips/1968/5072/00/50720267.pdf</strong></a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b78c20c605db" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The (Session) Ride of Your Life…]]></title>
            <link>https://medium.com/@alireubenstone/the-session-ride-of-your-life-1494324db06d?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/1494324db06d</guid>
            <category><![CDATA[ruby-on-rails]]></category>
            <category><![CDATA[protocol-tokens]]></category>
            <category><![CDATA[servers]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[rendering]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Mon, 05 Nov 2018 02:31:00 GMT</pubDate>
            <atom:updated>2018-11-05T12:14:37.740Z</atom:updated>
            <content:encoded><![CDATA[<p>I’ve recently been introduced to the magic of Rails and more specifically, the command — <em>rails new</em> — which enables you to create a new Rails application, with an <em>extensive</em> file structure, right from the command line.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iA7fOATCfHWd-MWKDnbDPw.gif" /><figcaption>Example of using the command “rails new”</figcaption></figure><p>For all developers, and especially novice ones, it is critical to understand all of the code in your app, <strong>even code that is pre-generated for you</strong>! That’s why I decided to look through all of the pre-generated files that “rails new” creates.</p><p>Before long, I came upon the <strong>controllers directory</strong> inside of the <strong>app folder</strong>. I opened up <strong>application_controller.rb </strong>file and this is what I saw<strong>:</strong></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a0b68defe6788bf3e386a56a1dcdb834/href">https://medium.com/media/a0b68defe6788bf3e386a56a1dcdb834/href</a></iframe><blockquote><strong>Protect from forgery? Who and what are we protecting ourselves from?</strong></blockquote><p>At first, I thought my computer had been hacked, but then I did some research and realized that this line of code is actually extremely helpful to protecting Rails applications and users of those applications. To understand how and why, let’s first discuss the concept of CSRF, Cross Site Request Forgery.</p><h3><strong>CSRF: Cross Site Request Forgery</strong></h3><blockquote>CSRF, also known as, “Session Riding”, “…is an attack vector that tricks a web browser into executing an unwanted action in an application to which a user is logged in”.</blockquote><p>Well, that’s a lot of words. Here’s a diagram (that I made!) to help you better understand CSRF:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*geBr34446UqeXOBc9Dl8YQ.png" /><figcaption>Illustration of CSRF</figcaption></figure><h4>So, back to the original code snippet from above:</h4><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a0b68defe6788bf3e386a56a1dcdb834/href">https://medium.com/media/a0b68defe6788bf3e386a56a1dcdb834/href</a></iframe><pre>protect_from_forgery with: :exception </pre><pre># This comes from a built-in Rails module called <strong>RequestForgeryProtection</strong> that gives access to <strong>protect_from_forgery</strong>.</pre><pre># <strong>with: :exception</strong> tells rails <em>how</em> to react to a CSRF attack.</pre><pre># Rails checks the <strong>authenticity token</strong> and if it cannot be verified, it will <em>raise an exception. </em></pre><h4><em>This is exactly where the form_authenticity_token comes into play…</em></h4><p>The form_authenticity_token makes it possible to validate a user’s token. The form_authenticity_token takes into account <em>two factors</em> when determining a token’s validity:</p><ol><li>A user’s <strong>Session ID</strong>, AND</li><li>Whether or not the user viewed the original form to get to the current page (when you “Session Ride”, you never see the original form page)</li></ol><p>Therefore, even if a hacker has the same session id as the user and he/she would like to view the “Transfer Money” page, the browser will know that the hacker did not come from the form on the original website to get to that specific page whereas the real user went through the real bank interface.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AMrfpkXq1WI9DrfmrRhfNQ.png" /></figure><p>There are a ton of files that I still have to explore in the Rails new structure, however I found this one especially interesting because it’s at the heart of understanding GET and POST requests and how those requests are affected in the world of cyber security.</p><p><strong>Sources:</strong></p><ul><li><a href="https://guides.rubyonrails.org/command_line.html">The Rails Command Line - Ruby on Rails Guides</a></li><li><a href="https://nvisium.com/blog/2014/09/10/understanding-protectfromforgery.html">Understanding Rails&#39; protect_from_forgery</a></li><li><a href="https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)">Cross-Site Request Forgery (CSRF)</a></li><li><a href="https://www.incapsula.com/web-application-security/csrf-cross-site-request-forgery.html">What is CSRF | Cross Site Request Forgery Example | Incapsula</a></li><li><a href="https://www.coursera.org/lecture/software-security/cross-site-request-forgery-csrf-MJuFC">Cross-site Request Forgery - CSRF - WEB SECURITY | Coursera</a></li><li><a href="https://stackoverflow.com/questions/941594/understanding-the-rails-authenticity-token">Understanding the Rails Authenticity Token</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1494324db06d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What the Tech is an API?]]></title>
            <link>https://medium.com/@alireubenstone/what-the-tech-is-an-api-8037d6fb0c7d?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/8037d6fb0c7d</guid>
            <category><![CDATA[api]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Mon, 22 Oct 2018 01:49:00 GMT</pubDate>
            <atom:updated>2018-10-22T12:51:15.588Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jgvmWU0ZuiOnuMWpxWWiJg.jpeg" /></figure><p>I’ve worked at a large tech company, a start up, and I am currently a student at a Software Development Bootcamp — all of these places share the buzzword, “<strong>API</strong>” or “<strong>Application Programming Interface</strong>”.</p><p>Up until yesterday, I could not explain what an API is and how it applies to the world of software development. I’d like to share with you what I have learned in a way that both novice software developers and experienced ones can understand.</p><h3>Let’s begin by looking at a scenario/place to which we can all relate…</h3><h3>A Restaurant:</h3><p>We have a <strong>Chef</strong>, a <strong>Customer</strong>, and a <strong>Waiter</strong>. (And food of course)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BLh38Xrg4sIC6TJFQZR31Q.jpeg" /></figure><h3><strong>In a Restaurant, how does information flow in order to get food/”the end result” to the Customer?</strong></h3><ol><li>Customer looks at <strong>menu</strong> and selects what he/she wants to order.</li><li>Customer tells <strong>Waiter</strong> what he/she would like to order.</li><li><strong>Waiter</strong> takes down the order and tells the order to the Chef.</li><li>If Customer has any additional request, Customer <em>goes through</em> the <strong>Waiter</strong> to tell the Chef information.</li><li>When the food is ready to be served, the <strong>Waiter</strong> <strong>delivers the food</strong> (end result) to the Customer.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zkpEzOvj2k74jnxSl1XrDw.jpeg" /></figure><p>In our Restaurant world, <strong><em>the Waiter is our API </em></strong>because the Waiter is the <strong><em>messenger</em> </strong>that “takes requests and tells a system” (the chef) what the Customer wants and then returns the response (the food) back to the Customer.</p><p>Now, let’s jump into a few <strong>software</strong> examples…</p><h3><strong>Booking a flight…</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BJ5te3FrQRDt6bCzfg1eRw.jpeg" /></figure><p><strong>You have a choice between:</strong></p><p>(A) Interacting directly with the airline’s website and its database to see if certain flights are available, or</p><p>(B) Interacting with a third party like Expedia or Kayak or Travelocity which aggregates all airline flight info.</p><blockquote><strong>Let’s assume we go with option B because we like choices and we want to make sure we’re getting a good deal. </strong>When you get to Expedia or Kayak, you select from a menu of options in order to select your flight criteria…</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*22MSHUSJVOEq4JI3MFBAzg.png" /><figcaption><a href="https://www.kayak.com/flights">https://www.kayak.com/flights</a></figcaption></figure><h3>This is where an API comes in…</h3><p>Expedia doesn’t magically have American Airlines’ flight database or Delta’s. Expedia needs an “entry point” or a “doorway” into a part of the airlines’ database. That entry point/doorway is the airlines’ <strong>API</strong>.</p><p>Expedia <strong>must interact with the airlines’ APIs </strong>in order to gain access to their flight information. The airlines’ API <strong>gets sent your requests </strong>from the drop down menu and <strong>returns any flights that match your criteria</strong>. Just like a waiter in a restaurant, <strong><em>the API receives the user’s “orders” and returns the results</em></strong>.</p><h3>You might be thinking…</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/728/1*6XoEWc_ENo0cZw6DfBv5aA.jpeg" /></figure><p>Well, imagine there were no APIs…that would mean every single application that needed access to another database of information would have to custom build that database or they might not have a way to access that data at all.</p><p>That <em>might</em> be feasible in certain scenarios, but it certainly would not be for websites that need access to such expansive amounts of information like airline flight info that can change at any time based on weather and other factors.</p><p>In addition, APIs allow the user to search <em>in one place</em> while the <em>API</em> does the legwork of going back and forth between the other website and the current one. This allows for a more enjoyable and easy user experience.</p><blockquote>On the web, APIs make it possible for sites to let other apps and developers use their data for their own applications and purposes.</blockquote><blockquote>They work by “exposing” some limited internal functions and features so that applications can share data without developers having direct access to the behind-the-scenes code.</blockquote><p>Ultimately, APIs are “doorways” into a portion of a company’s data. With this doorway, other companies can build out applications that rely on this data without having to (re)build it themselves. APIs allow for a more connected and efficient web.</p><p><strong>Sources:</strong></p><ul><li><a href="http://blog.diffbot.com/why-dont-all-websites-have-an-api-and-what-can-you-do-about-it/">Why Don&#39;t All Websites Have an API? And What Can You Do About It?</a></li><li><a href="https://www.programmableweb.com/api-university/what-are-apis-and-how-do-they-work">What Are APIs and How Do They Work?</a></li><li><a href="https://hackathon.expedia.com/docs/public/api/">Expedia API Documentation | Public APIs</a></li><li><a href="https://videos.mulesoft.com/watch/Le2QkL3lixu3GmssEXYyLg">What is an API?</a></li><li><a href="https://en.wikipedia.org/wiki/Application_programming_interface">Application programming interface</a></li><li><a href="https://medium.freecodecamp.org/what-is-an-api-in-english-please-b880a3214a82">What is an API? In English, please.</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8037d6fb0c7d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[An Engineering Student Fights for the Future of Nigeria]]></title>
            <link>https://medium.com/collaborizm/the-collaborizm-campaign-through-nigeria-8a7044badac9?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/8a7044badac9</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[education]]></category>
            <category><![CDATA[entrepreneurship]]></category>
            <category><![CDATA[incubator]]></category>
            <category><![CDATA[freelancing]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Thu, 22 Jun 2017 19:21:15 GMT</pubDate>
            <atom:updated>2017-06-23T19:17:57.566Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*z2MlVWxM76vE1XtlWpDz_Q.jpeg" /></figure><p>Collaborizm is an online tech incubator that is aiding underprivileged innovators to achieve their entrepreneurial goals. With most of its user base coming from the Eastern hemisphere, and more specifically, Asia and Africa, Collaborizm is changing the lives of millennials in poorer parts of the world, and has actually inspired somewhat of a quasi-religious movement in some of its users.</p><p>Here is one story about Areous Ahmadtj, a native Nigerian, who is now on a mission to spread the word about Collaborizm to other young innovators by contacting local universities. Here is Areous’ story:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZyYthIaFRgot4D9l3evdpA.jpeg" /></figure><p>Areous grew up in Jos, Nigeria, aka, “J-Town”, where he had to contend with many struggles due to lack of educational resources, technology, and electricity. In spite of these obstacles, Areous taught himself graphic design and programming with the help of his older brother Nas, a computer science student. Areous recalls one of his first lessons with Nas: “<em>He (Nas) said that computer programming language is made of ‘IF AND ELSE IF’. I was a little kid at the time and didn’t really understand what he meant. A big problem I faced then was having no Internet access so my learning process was so slow.”</em></p><p>Therefore, when Areous came across Collaborizm, a platform which enables anyone from across the world to build projects and meet other makers, he was instantly hooked — this platform was giving him access to things he had never had access to before.</p><p>The idea of this journey started whilst sitting in his room thinking deeply about a project he had started several months prior on the Collaborizm platform, <a href="https://www.collaborizm.com/project/Sy9ktGM5x">Taking Collaborizm to Students</a>. Living in Nigeria, it was clear to him, being a student himself, that there were a lot of students that wanted to make something of their lives, but had no way to do so. Collaborizm offered that opportunity; however, most Nigerians were not aware of it. <em>“This was the motivation I needed to get myself off the ground and go to the 5 best universities in Nigeria, I decided to go to ATBU first”, </em>says Areous.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/660/1*jtwLhLNdFwKlvNBhz7I_Lw.jpeg" /></figure><p>ATBU — Abubakar Tafawa Balewa University is a federal university of technology located in Bauchi, northern Nigeria; its mission is to provide relevant and high quality education and prepare individuals for work, leadership and a meaningful life, through promotion of research, teaching, development and testing of ideas in order to advance understanding and quality of life.</p><p>From his home in J — Town, Areous took a three hour taxi ride into the capital of Bauchi State, arriving at the <a href="https://hotels.ng/hotel/35166-zaranda-hotel-bauchi">Zaranda Hotel, Bauchi</a> and faced his first challenge: getting in touch with university staff members. He began making some calls to anyone that might be able to help connect him with a staff member and he eventually connected with Aneo Ahmed, one of the university’s computer science and education students, and a friend of his brother, Nas.</p><p>Aneco Ahmed explained that the university has a lot of restrictions concerning outside visitors, but that since he is the class representative, he would be able to help connect Areous with the school rector. As a result of this introduction, Areous has a meeting scheduled with the school rector at the end of this month. In the meantime, Areous has a meeting with the Head of Programming where he will introduce him to Collaborizm and explain why it is critical to the university students.</p><p>In addition, Collaborizm will be creating a forum for the university students where they can share and develop ideas and post assignments. Areous also plans to create a course at the university’s Information Communication Technology suite (ICT) entitled “Collaborizm Developers”, which will cover concepts of various programming languages and networking skills.</p><p>In this short period of time, Areous has already garnered over 1400 sign ups from local Nigerian university students, he has gathered the support of several university professors and has given hope and inspiration to hundreds of aspiring makers and future entrepreneurs. Areous’ current plan is to remain in Bauchi over a one month duration to attract more users before he moves on to Bayero University Kano where we will continue to follow his incredible story.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*By7eNDwGCvV3NV6Lp7x7Dg.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8a7044badac9" width="1" height="1" alt=""><hr><p><a href="https://medium.com/collaborizm/the-collaborizm-campaign-through-nigeria-8a7044badac9">An Engineering Student Fights for the Future of Nigeria</a> was originally published in <a href="https://medium.com/collaborizm">Collaborizm Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Formulating a Fantasy World]]></title>
            <link>https://medium.com/collaborizm/formulating-a-fantasy-world-e5ac9ac714d4?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/e5ac9ac714d4</guid>
            <category><![CDATA[fantasy]]></category>
            <category><![CDATA[gaming]]></category>
            <category><![CDATA[imagination]]></category>
            <category><![CDATA[videogames]]></category>
            <category><![CDATA[writing]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Wed, 05 Apr 2017 17:48:59 GMT</pubDate>
            <atom:updated>2017-04-05T17:48:59.534Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/798/1*P6kEYmVTYRZ8Mpc7syDZRg.png" /></figure><h3>The Beauty of Imagination</h3><p>The one thing we never lose, even when we grow up to be big, responsible adults (yeah right), is our <em>imagination</em>. You could be a forty-year old businessman, sitting at your desk pretending to look up the financial projections of a company and still doze off thinking of what life would be like <em>if </em>dogs could talk, you were able to fly, could read peoples’ minds, could time travel, etc…there is something so awesome about being able to dream of things that are entirely fictional.</p><p>Imagination allows us to transport ourselves out of our normal lives and experience extraordinary things. That’s why people <em>love</em> fantasy in books, movies, and video games.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8XeW5ZNYSQf71Neqr_Bqyg.jpeg" /></figure><h3>The Concept</h3><p>Arti Loftus, one of our top users, is both a talented artist and techie, who started a project that capitalizes on <em>imagination</em>. Her dream is to create not just a story, but an entire fantasy world — hence the name <a href="https://www.collaborizm.com/project/BkllwUGTe">Fantasy World Build</a> — that can one day be used as the basis for a video game.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/664/1*r-lz01LKS0X9d2Mo_Nm53Q.png" /></figure><p>Now you may be thinking, <em>what about Game of Thrones or Dungeon &amp; Dragons or Lord of the Rings</em>? Well I say, <em>what about them?!?! </em>These games all stem from similar fantasy worlds where men ride horses and wear armor and women only contribute to the world through childbirth or romance. Arti wants to create a fantasy world <em>totally unlike</em> the ones listed above, and it’s up to the Collaborizm community to create it.</p><h3>Ideas for the Fantasy World</h3><p>Arti so kindly provided a guide to help build the fantasy world. It has an extensive list of questions to help guide us through the creation process. Here’s an example of a few of the questions you’d have to answer to create a successful fantasy world…and these are just the BASIC questions — imagine the more complex ones!</p><blockquote>Are the laws of nature and physics actually different in this world, or are they the same as in real life? How does magic fit in? How do magical beasts fit in?</blockquote><blockquote>Is this generally an earth-like world? Is it an “alternate Earth”?</blockquote><blockquote>Are there different human races, whether or not there are non-humans like elves or dwarves? How does the cultural and ethnic diversity of this world compare to the real world?</blockquote><h3>To Conclude</h3><p>Don’t be overwhelmed — all of these questions don’t need to be answered in one sitting, but they’re very important to think about. I really love this project because it honors and respects the work of truly creative minds, like writers and storytellers. While Collaborizm does have mostly tech-heavy projects that involve drones or robots (and those are great), I think it is very important to highlight projects like these that need just one thing — your mind…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sTp-RyQ5azx3aEM9MAy2Gg.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e5ac9ac714d4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/collaborizm/formulating-a-fantasy-world-e5ac9ac714d4">Formulating a Fantasy World</a> was originally published in <a href="https://medium.com/collaborizm">Collaborizm Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[No Power Outlet? No Problem!]]></title>
            <link>https://medium.com/collaborizm/no-power-outlet-no-problem-7f51dd89cfca?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/7f51dd89cfca</guid>
            <category><![CDATA[photovoltaic]]></category>
            <category><![CDATA[solar-power]]></category>
            <category><![CDATA[solar-energy]]></category>
            <category><![CDATA[energy]]></category>
            <category><![CDATA[battery]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Wed, 29 Mar 2017 18:14:15 GMT</pubDate>
            <atom:updated>2017-03-29T18:14:15.640Z</atom:updated>
            <content:encoded><![CDATA[<p>It’s always awesome to see people invent and create projects for the good of their community. This does happen quite a bit on Collaborizm, however I’d like to highlight one project in particular that is making significant progress: <a href="https://www.collaborizm.com/project/HJR4XO0og"><strong>The SMPS-Based PV Solar Charger</strong></a><strong>, </strong>a solar powered battery charger.</p><p>Abhi Verma is the mastermind behind this project, and he was inspired to create this charger because his community in India has extremely limited access to electricity. Abhi points out that the power requirements for the second largest population on earth are prohibitively expensive, so he wanted to find a cost-effective solution…enter solar power!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*dmR8PJaTmUHaYcOcVIWNZw.jpeg" /></figure><h3>Understanding the Jargon</h3><p>Let’s break down the name because WOW, that’s a lot of letters. <strong>SMPS</strong> stands for “switched-mode power supply” which is an “electronic <a href="https://en.wikipedia.org/wiki/Power_supply">power supply</a> that incorporates a <a href="https://en.wikipedia.org/wiki/Voltage_regulator#Switching_regulators">switching regulator</a> to <a href="https://en.wikipedia.org/wiki/Electrical_power_conversion">convert electrical power</a> efficiently” (Wikipedia, “Switched-mode power supply”). Unlike other power sources, such as a linear power source, the SMPS transistor spends as little time as possible in high dissipation transitions, which minimizes energy waste, and therefore, minimizes co$t. As a result, SMPS power supplies are preferable to those who are focused on saving money.</p><p>Next, is the <strong>PV</strong> part of the name, which stands for <em>photovoltaic</em>, which means the conversion of light (sunlight in this case :) ) into electricity — ahhh, now it all makes sense since this is a <strong>solar-powered</strong> charger.</p><h3>The Design and Prototype</h3><p>It’s pretty incredible that Abhi’s design on the left turned into the physical device on the right. With input from the Collaborizm community, Abhi was able to make the correct adjustments to create the best prototype.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/785/1*-0d2XJgD62xkhOOyPx3R4A.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/551/1*U62-WPGXWoa_3VD9wabquQ.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F_3OOBelPDVQ%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D_3OOBelPDVQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F_3OOBelPDVQ%2Fhqdefault.jpg&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/40abf77b70acee84307d6b513838f2c6/href">https://medium.com/media/40abf77b70acee84307d6b513838f2c6/href</a></iframe><h3>Watch it Work!</h3><p>Below is Abhi’s original charger, which he first built to charge his drones’ lipo battery. With new improvements, the charger can now charge any kind of battery by adjusting the output voltage. Currently, the max voltage current is 3 amp.</p><h3>Why this is AWESOME</h3><p>Not only can Abhi help his community obtain access to electricity, he can help India find cheaper ways to obtain electricity. One idea for a community can now help a <em>continent</em>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7f51dd89cfca" width="1" height="1" alt=""><hr><p><a href="https://medium.com/collaborizm/no-power-outlet-no-problem-7f51dd89cfca">No Power Outlet? No Problem!</a> was originally published in <a href="https://medium.com/collaborizm">Collaborizm Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Your Coffee Break Just Got A Lot Easier!]]></title>
            <link>https://medium.com/collaborizm/your-coffee-break-just-got-a-lot-easier-7fc5ac2f6acd?source=rss-4a20a3347604------2</link>
            <guid isPermaLink="false">https://medium.com/p/7fc5ac2f6acd</guid>
            <category><![CDATA[robots]]></category>
            <category><![CDATA[coffee]]></category>
            <category><![CDATA[bots]]></category>
            <category><![CDATA[robotics]]></category>
            <dc:creator><![CDATA[Ali Reubenstone]]></dc:creator>
            <pubDate>Fri, 17 Mar 2017 19:26:50 GMT</pubDate>
            <atom:updated>2017-03-17T19:28:19.824Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/559/1*3QF5tQ1E9eTDAXjNsduq1g.png" /></figure><p>I can finally say my dreams have come true. No…Brad Pitt didn’t ask me out on a date, <em>but</em> the greatest invention of my lifetime has been created — the <a href="https://www.collaborizm.com/project/B1skCk1ve">Coffee Bot</a>, a robot that delivers coffee and can be controlled from anywhere in the world.</p><p>Let’s say your boss asks you for a cup of joe, but you have tons of work to do and don’t want to get up and deliver it to him/her…that’s where the coffee bot comes in. Sure, you still have to actually <em>make</em> the coffee, but no more delivering the coffee like a lowly intern! Or, let’s say you know your co-worker is getting up from her desk to get some coffee, but you feel lazy and don’t want to get up — you simply tell your friend to pour you a cup of coffee and send it over with the Coffee Bot!</p><p>Don’t worry, the coffee bot doesn’t <em>only</em> deliver coffee around the office — I mean how boring would <em>that</em> be? — it can deliver letters, small packages, and anything else it’s able to hold on to with its cute little gripper, which is controlled from the user’s laptop.</p><h3>A Little Coffee Bot History</h3><p>The creator of the Coffee Bot is one of Collaborizm’s top users, John Rodriguez. John was inspired to create this project because he was fascinated by the idea of controlling a robot from his computer. Also, John loved the idea behind Collaborizm Founder, Steven Reubenstone’s, pizza drone (yes, a drone that delivers pizza) and was inspired to create a robot that could deliver something everyone loves, coffee. I cannot forget to mention Harsha Alva, who has also made tremendous contributions to this project.</p><p>Below is a video of the working prototype!!!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F6OaozHdk1j8%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6OaozHdk1j8&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F6OaozHdk1j8%2Fhqdefault.jpg&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/185c175bc57f8217baed653722ba96b4/href">https://medium.com/media/185c175bc57f8217baed653722ba96b4/href</a></iframe><h3>First-Person View</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/475/1*mJJhe5prJhYsvZE5cB7gZQ.jpeg" /></figure><p>The coolest feature of the Coffee Bot is that the person controlling it can see exactly where the Coffee Bot is going through a camera. So, when your coffee gets to delivered to its desired location, you can see the reaction of the person to whom you are sending the delivery! (Desired reaction is photographed above) In addition, the camera can be moved in multiple directions so that the Coffee Bot won’t bump into desks or chairs and therefore, won’t spill your precious coffee.</p><p>I don’t know about you, but once this product comes to market, I will be the first one to buy it. I can pair my laziness with more coffee — how perfect, right!?!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/735/1*cyJudJqP1hUo3Bi1ye6XQA.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7fc5ac2f6acd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/collaborizm/your-coffee-break-just-got-a-lot-easier-7fc5ac2f6acd">Your Coffee Break Just Got A Lot Easier!</a> was originally published in <a href="https://medium.com/collaborizm">Collaborizm Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>