<?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:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Red Writes Here]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://red.to/</link><image><url>https://red.to/favicon.png</url><title>Red Writes Here</title><link>https://red.to/</link></image><generator>Ghost 3.0</generator><lastBuildDate>Tue, 26 Nov 2019 21:51:16 GMT</lastBuildDate><atom:link href="https://red.to/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[The Batcave 🦇]]></title><description><![CDATA[<blockquote><em>Originally posted on the <a href="https://medium.com/plum-engineering">Plum Engineering Blog</a></em></blockquote><p>At Plum we use a few internal tools to help our engineers debug issues faster.</p><p>Our mobile apps also have some internal tooling that we place in a view controller called The Batcave. The Batcave is only accessible on our internal builds and</p>]]></description><link>https://red.to/the-batcave/</link><guid isPermaLink="false">5ddd96495cf7270e1f6aad58</guid><dc:creator><![CDATA[Red Davis]]></dc:creator><pubDate>Tue, 26 Nov 2019 21:17:51 GMT</pubDate><content:encoded><![CDATA[<blockquote><em>Originally posted on the <a href="https://medium.com/plum-engineering">Plum Engineering Blog</a></em></blockquote><p>At Plum we use a few internal tools to help our engineers debug issues faster.</p><p>Our mobile apps also have some internal tooling that we place in a view controller called The Batcave. The Batcave is only accessible on our internal builds and is there to aid in debugging and testing.</p><blockquote>Our <a href="https://medium.com/plum-engineering/automating-our-app-release-cycle-c1534277cf86?source=friends_link&amp;sk=ab955a8951e54b6348eb88dc731bddf1">last blog post</a> explains our build and release process.</blockquote><p>This post is a little sneak peak into the Batcave…</p><figure class="kg-card kg-image-card"><img src="https://cdn-images-1.medium.com/max/1600/1*jW5E_iG_IuQfCJho6v-45g.gif" class="kg-image"></figure><h3 id="spinosa">Spinosa</h3><figure class="kg-card kg-image-card"><img src="https://cdn-images-1.medium.com/max/1600/1*TSTobOu1Bfb2LKHDVG0HHg.png" class="kg-image"></figure><p>Our data models are very state heavy. There are states ranging from the users transactions state: pending, failed, successful etc. The state of a users investment onboarding flow: pending, completed, data required etc. Also, Let us not forget the state of the connection to the users bank account which can hold many wonderful combinations of state.</p><p>Our apps use these states to determine what UI to show and how to show it.</p><p>Being able to understand what is being shown to the user and why, is really important when debugging.</p><p>So we built a very non-intrusive HTTP debugging library that gives us the ability to inspect all requests and responses on the device.</p><p>We then took it one step further and added a “Report a bug” button to the Batcave. Tapping this will zip up the last 30 request and responses and present a <em>MFMailComposeViewController</em> with a bug report template and a zip file of all the data attached. The email is sent to Zapier where it is then processed and turned into a Jira ticket 🎉</p><p>Having this type of tooling helps to tighten the loop between finding, debugging and fixing bugs.</p><h3 id="server">Server</h3><p>No Batcave would be complete without the ability to select which server the app points towards. However, just being able to point to production or staging wasn’t enough. We needed our backend engineers to be able to easily test the Plum app against their own local version of Plum’s backend.</p><p>Inside the Batcave, along with the options for selecting the predefined servers there is the option for assigning a custom server. There are four text fields for the four base urls that the app needs to function. This is quite a lot of typing and prone to error so we added a QR code scanner that can be used to simply pass a predefined JSON payload containing all the data required to the Batcave.</p><figure class="kg-card kg-image-card"><img src="https://cdn-images-1.medium.com/max/1600/1*bufD0y2UYEPgEyCXvmFKlQ.gif" class="kg-image"></figure><h3 id="view-controller-presentation">View Controller Presentation</h3><p>We have quite a few view controllers that aren’t directly accessible from the main navigation of the app, like splash screens, onboarding flows and our KYC flow.</p><p>It important we can access these screens easily for testing and demoing so we built a simple list that lets us present these screens whenever we want.</p><h3 id="open-sourcing-spinosa">Open Sourcing Spinosa</h3><p>We finish this post with a little gifts. Several months ago we open sourced our <a href="https://github.com/withplum/CardNavigationController" rel="noopener"><em>CardNavigationController</em></a> library and today we’re open sourcing <a href="https://github.com/withplum/Spinosa" rel="noopener"><strong>Spinosa</strong></a> the HTTP debugging library we use in Plum. Enjoy!</p><h3 id="we-re-hiring">We’re Hiring</h3><p>P.S. You should totally <a href="https://withplum.workable.com" rel="noopener nofollow noopener noopener">join us</a>.</p>]]></content:encoded></item><item><title><![CDATA[Weekly Links - 18/11/19]]></title><description><![CDATA[<h3 id="light-commands">Light Commands</h3><p><a href="https://lightcommands.com/">https://lightcommands.com/</a></p>]]></description><link>https://red.to/weekly-links-18-11-19/</link><guid isPermaLink="false">5ddd95b95cf7270e1f6aad4a</guid><dc:creator><![CDATA[Red Davis]]></dc:creator><pubDate>Mon, 18 Nov 2019 21:14:00 GMT</pubDate><content:encoded><![CDATA[<h3 id="light-commands">Light Commands</h3><p><a href="https://lightcommands.com/">https://lightcommands.com/</a></p>]]></content:encoded></item><item><title><![CDATA[Weekly Links - 4/11/19]]></title><description><![CDATA[<h3 id="plum-android">Plum Android</h3><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.withplum.com/plum-android-app/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Say Hello to Plum’s Android App</div><div class="kg-bookmark-description">If you prefer your Plum more 🤖 than 🍏 we’ve got some great news! We super-excited to announce the launch of our brand new Android app, which is now available through the Play store!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.withplum.com/favicon.png"><span class="kg-bookmark-author">Plum Team</span><span class="kg-bookmark-publisher">Plum – Blog</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.withplum.com/content/images/2019/11/191017-android--1--1.jpg"></div></a></figure><h3 id="steve-jobs-presents-think-different">Steve Jobs Presents "Think</h3>]]></description><link>https://red.to/28-10-19-2/</link><guid isPermaLink="false">5ddd955b5cf7270e1f6aad3a</guid><dc:creator><![CDATA[Red Davis]]></dc:creator><pubDate>Mon, 04 Nov 2019 21:13:00 GMT</pubDate><content:encoded><![CDATA[<h3 id="plum-android">Plum Android</h3><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.withplum.com/plum-android-app/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Say Hello to Plum’s Android App</div><div class="kg-bookmark-description">If you prefer your Plum more 🤖 than 🍏 we’ve got some great news! We super-excited to announce the launch of our brand new Android app, which is now available through the Play store!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.withplum.com/favicon.png"><span class="kg-bookmark-author">Plum Team</span><span class="kg-bookmark-publisher">Plum – Blog</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.withplum.com/content/images/2019/11/191017-android--1--1.jpg"></div></a></figure><h3 id="steve-jobs-presents-think-different">Steve Jobs Presents "Think Different"</h3><figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/MrZKoWgcZVg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h3 id="hacker-hunter-wannacry-the-marcus-hutchins-story">hacker:HUNTER - Wannacry: The Marcus Hutchins Story</h3><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/vveLaA-z3-o?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[Weekly Links - 28/10/19]]></title><description><![CDATA[<h3 id="deep-dive-into-finding-product-market-fit-rahul-vohra-founder-ceo-superhuman">Deep Dive Into Finding Product Market Fit // Rahul Vohra, Founder &amp; CEO, Superhuman</h3><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/t0HJTD_eyR8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h3 id="joe-rogan-experience-1368-edward-snowden">Joe Rogan Experience #1368 - Edward Snowden</h3><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/efs3QRr8LWw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></description><link>https://red.to/28-10-19/</link><guid isPermaLink="false">5ddd94c75cf7270e1f6aad2d</guid><dc:creator><![CDATA[Red Davis]]></dc:creator><pubDate>Mon, 28 Oct 2019 21:11:00 GMT</pubDate><content:encoded><![CDATA[<h3 id="deep-dive-into-finding-product-market-fit-rahul-vohra-founder-ceo-superhuman">Deep Dive Into Finding Product Market Fit // Rahul Vohra, Founder &amp; CEO, Superhuman</h3><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/t0HJTD_eyR8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h3 id="joe-rogan-experience-1368-edward-snowden">Joe Rogan Experience #1368 - Edward Snowden</h3><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/efs3QRr8LWw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item></channel></rss>