<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ray Besiga</title>
    <description>Thoughts, ideas, research and everything in between.</description>
    <link>https://raybesiga.com//</link>
    <atom:link href="https://raybesiga.com//feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 01 Nov 2024 18:03:31 +0300</pubDate>
    <lastBuildDate>Fri, 01 Nov 2024 18:03:31 +0300</lastBuildDate>
    <generator>Jekyll v4.3.4</generator>
    
      <item>
        <title>I left Opareta</title>
        <description>&lt;figure class=&quot;fullwidth&quot;&gt;
    &lt;img src=&quot;/img/17-mile-drive-carmel-ca.jpeg&quot; alt=&quot;17 Mile Drive in Carmel, California, USA. June 2024.&quot; /&gt;
    &lt;figcaption&gt;17 Mile Drive. Carmel, California, USA. June 2024.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Just over 3 months ago, on March 31, 2024, I left my role as co-founder of Opareta.&lt;/p&gt;

&lt;p&gt;In managing the transition, there was a need to communicate this in a way that reassured both internal and external stakeholders of the company’s continued potential.&lt;/p&gt;

&lt;p&gt;With our team, I shared the following letter:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dear Opareta Team,&lt;/p&gt;

&lt;p&gt;I write today to inform you that March 31, 2024, will be my last day as co-founder of Opareta. I am honored to have worked with you all to take Opareta from a fledgling idea, 5 years ago, to the organization that, today, provides immense value to our partners and their customers in the Gambia, Angola, and Uganda.&lt;/p&gt;

&lt;p&gt;As we have grown into a global team with colleagues in Accra, Beirut, Kampala, Lagos, Lilongwe, Lisbon, and Nairobi, it has been a pleasure and privilege to watch you grow and take on ever-evolving challenges with a keen sense of fellowship. I cannot fathom a better team to build the infrastructure required to enable the delivery of financial services through open, dynamic, highly efficient agent networks.&lt;/p&gt;

&lt;p&gt;As I step away from day-to-day operations, I have full confidence in Mike and the leadership team, and in their ability to deliver on our mission and vision, guided by the values that anchor our culture at Opareta.&lt;/p&gt;

&lt;p&gt;While I do not downplay what we have achieved so far, the best is yet to come. I will miss you all but I trust that we shall stay in touch. Smooth Opareta Out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And for our current and prospective investors, my co-founder Mike shared the following:&lt;/p&gt;

&lt;blockquote&gt;
 &lt;p&gt;Before we get into this quarter’s business update, I wanted to share some important news regarding the Opareta leadership team. Our visionary co-founder - Ray Besiga - has resigned from his position as CIO to focus on new projects.&lt;/p&gt;
  
&lt;p&gt;Ray has been an integral part of the Opareta journey, setting the company’s initial vision and leading technical execution. As one of the continent’s most visionary technologists, Ray has not only dreamt up a world where agent-led distribution is fully democratized, but also built a world-class product to make that dream a reality. I’ll forever be thankful to Ray for opening my eyes to this incredible opportunity, inspiring me to take the entrepreneurial leap, and teaching me how to take a startup from 0 to 1.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kind words.&lt;/p&gt;

&lt;p&gt;Taking Opareta from an idea in my notebook to an entity that continues to enhance access to mobile financial services for many Africans today was an enriching experience. I learned so much and for that I am grateful.&lt;/p&gt;

&lt;p&gt;Over the last 3 months, I have taken time to read, reflect, travel and do research. This period of exploration has left me brimming with excitement for what comes next. I am keen to explore new opportunities and challenges. If you are interested in collaboration or have an exciting opportunity, please do not hesitate to &lt;a href=&quot;/contact/&quot; title=&quot;Say hello&quot;&gt;reach out&lt;/a&gt;. Aluta continua!&lt;/p&gt;
</description>
        <pubDate>Mon, 08 Jul 2024 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//on-leaving-opareta/</link>
        <guid isPermaLink="true">https://raybesiga.com//on-leaving-opareta/</guid>
        
        <category>work</category>
        
        <category>startups</category>
        
        <category>career</category>
        
        
        <category>Work</category>
        
      </item>
    
      <item>
        <title>The Palm Wine Drinkard</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/tutuola.jpg&quot; alt=&quot;Amos Tutuola&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Another outstanding book recommendation from my great friend and now co-founder, &lt;a href=&quot;https://www.linkedin.com/in/michael-schwartz-0369b275/&quot;&gt;Mike Schwartz&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this early exploration of magical realism, Amos Tutuola taunts and cajoles in a phantasmagorical fever dream that dares you to hang onto your sensibilities. While loquacious, he displays a staggering degree of self awareness in how he counters the panoply of wild folktales with a modicum of sanity. It sometimes feels like he is creating his own language, and teaching you how to speak it, in real time.&lt;/p&gt;

&lt;p&gt;When the book was first released, to widespread contempt, Dylan Thomas recognized its brilliance and regaled it as such. In 1952, it was acquired and published by T.S. Eliot, making it the first African novel published in English outside of Africa. I was so taken by it that i managed to finish it in 2 sittings. I recommend you read it.&lt;/p&gt;
</description>
        <pubDate>Mon, 27 Feb 2023 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//the-palm-wine-drinkard/</link>
        <guid isPermaLink="true">https://raybesiga.com//the-palm-wine-drinkard/</guid>
        
        <category>tutuola</category>
        
        <category>magical realism</category>
        
        <category>books</category>
        
        <category>african literature</category>
        
        
        <category>Books</category>
        
      </item>
    
      <item>
        <title>My longform reading list for 2021</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/gene-art-2.png&quot; alt=&quot;Circle Packing&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I quite enjoy long-form reading and I made a resolution to return to it at the start of 2021. While I did not read too many, I learned so much from these books and I hope that they will make for useful recommendations or distractions. Here they are in chronological order.&lt;/p&gt;

&lt;h3 id=&quot;certain-to-win-the-strategy-of-john-boyd-applied-to-business&quot;&gt;Certain to Win: The Strategy of John Boyd, Applied to Business&lt;/h3&gt;

&lt;p&gt;How might a navy pilot’s strategy and decision framework help you stay ahead of adversaries and competitors in business? Chet Richards explores the possibilities. The main takeway was that deciding factor is the ability to make fast, assymetric transients. In plain speak, agility and dynamism in the face of new information or scenarios.&lt;/p&gt;

&lt;h3 id=&quot;the-enchiridion&quot;&gt;The Enchiridion&lt;/h3&gt;

&lt;p&gt;Epictetus suggests practical ways to develop and maintain Stoic sensibilities. A solid foundation in my opinion.&lt;/p&gt;

&lt;h3 id=&quot;harry-potter-and-the-goblet-of-fire&quot;&gt;Harry Potter and the Goblet of Fire&lt;/h3&gt;

&lt;p&gt;Poor Cedric!&lt;/p&gt;

&lt;h3 id=&quot;alchemy-the-surprising-power-of-ideas-that-dont-make-sense&quot;&gt;Alchemy: The Surprising Power of Ideas That Don’t Make Sense&lt;/h3&gt;

&lt;p&gt;Time and again, Rory Sutherland conjures his unique storytelling abilities to reveal the whimsical nature of human experience. He is an excellent campaigner for the need for creative approaches in tackling pressing societal problems. More stories please, Rory.&lt;/p&gt;

&lt;h3 id=&quot;a-guide-to-the-good-life-the-ancient-art-of-stoic-joy&quot;&gt;A Guide to the Good Life: The Ancient Art of Stoic Joy&lt;/h3&gt;

&lt;p&gt;William B. Irvine profers a pragmatic guide on how to live a better life today by tapping into ancient Greek and Roman stoicism. One of my favorites.&lt;/p&gt;

&lt;h3 id=&quot;the-hard-thing-about-hard-things&quot;&gt;The Hard Thing About Hard Things&lt;/h3&gt;

&lt;p&gt;Ben Horowitz, while dropping serious bars, reminds us that building a worthwhile business is hard. This is a handbook to carry with you through the best or the worst of times. For the oblivious, it will help you tell these times apart.&lt;/p&gt;

&lt;h3 id=&quot;failing-to-win-hard-earned-lessons-from-a-purpose-driven-startup&quot;&gt;Failing To Win: Hard-earned lessons from a purpose-driven startup&lt;/h3&gt;

&lt;p&gt;Mike Quinn shares hard-won lessons from his startup journey with Zoona in Malawi. Poignant and instructive reading for anyone thinking to take the entrepreneurship path through a startup, especially in East Africa.&lt;/p&gt;

&lt;h3 id=&quot;flow-the-psychology-of-optimal-experience&quot;&gt;Flow: The Psychology of Optimal Experience&lt;/h3&gt;

&lt;p&gt;Mihaly Csikszentmihalyi investigates how to derive genuine satisfaction from the things we choose to do. He explores how to get in the groove and stay there. Major tip: because you enjoy doing something for no other reason than the act of doing it. One I will keep coming back to.&lt;/p&gt;

&lt;h3 id=&quot;range-why-generalists-triumph-in-a-specialized-world&quot;&gt;Range: Why Generalists Triumph in a Specialized World&lt;/h3&gt;

&lt;p&gt;David Epstein reminds us that diversity of knowledge and experience makes for an optimal life. It may even help us thrive despite the specialized needs of modern work.&lt;/p&gt;

&lt;h3 id=&quot;harry-potter-and-the-order-of-the-phoenix&quot;&gt;Harry Potter and the Order of the Phoenix&lt;/h3&gt;

&lt;p&gt;Padfoot!&lt;/p&gt;

&lt;h3 id=&quot;what-you-do-is-who-you-are&quot;&gt;What You Do Is Who You Are&lt;/h3&gt;

&lt;p&gt;As with anything worth doing, Ben Horowitz reminds us that setting company culture is about having skin in the game. As a leader, it is not what you say but what you do that defines your culture. The values you embody at critical decision points are the culture you set for your organization. He also quotes the sickest bars in hip hop.&lt;/p&gt;
</description>
        <pubDate>Wed, 12 Jan 2022 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//my-2021-longform-reading-list/</link>
        <guid isPermaLink="true">https://raybesiga.com//my-2021-longform-reading-list/</guid>
        
        <category>reading</category>
        
        <category>books</category>
        
        <category>longform</category>
        
        
        <category>books</category>
        
      </item>
    
      <item>
        <title>Relaunching Akabbo</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/bill-wegener-unsplash.jpg&quot; alt=&quot;Happy Ugandan Kids&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Last month, in the midst of the second wave of Covid-19 infections in Uganda, I came across torrents of sad news from deaths and the hardships of the national lockdown. I thought about how to help people and communities in need during this time. And an old idea came to mind.&lt;/p&gt;

&lt;h2 id=&quot;what-is-akabbo&quot;&gt;What is Akabbo?&lt;/h2&gt;

&lt;p&gt;Akabbo was the very first online crowdfunding platform in Uganda when it launched back in November 2014. It ran a number of successful campaigns before going completely quiet in 2018.&lt;/p&gt;

&lt;h2 id=&quot;why-bring-it-back-now&quot;&gt;Why bring it back now?&lt;/h2&gt;

&lt;p&gt;Akabbo did not undergo maintenance for a long time and became unusable. Many key libraries were outdated and &lt;a href=&quot;https://www.python.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Python&lt;/a&gt;, the programming language at its core, had moved on from Version 2 to Version 3. In &lt;a href=&quot;https://semver.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;semantic versioning&lt;/a&gt;, that difference between the versions accounts for years of software engineering time. So much had changed. I figured that there was no better time to revive Akabbo and securely put it to communal good.&lt;/p&gt;

&lt;p&gt;I spent a fair amount of hours during my downtime rebuilding it from scratch. I opted to go with the &lt;a href=&quot;https://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt; framework as it is my preferred choice for full-stack web application development. It has great &lt;a href=&quot;https://docs.djangoproject.com/en/3.2/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;documentation&lt;/a&gt; and a &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;wealth&lt;/a&gt; of &lt;a href=&quot;https://awesomedjango.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;resources&lt;/a&gt; for aspiring developers.&lt;/p&gt;

&lt;p&gt;Now more than ever, we could all use community support. Sometimes, the best community support you can get is financial. Akabbo simplifies the fundraising process. You can check out the latest and greatest version &lt;a href=&quot;https://www.akabbo.ug/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;how-does-one-start-to-use-akabbo&quot;&gt;How does one start to use Akabbo?&lt;/h2&gt;

&lt;p&gt;Akabbo is pretty simple and intuitive by design. Create an account, and start a campaign, or donate to a campaign. That’s it. However, if you are looking for a more detailed way to go about the platform, I wrote a &lt;a href=&quot;https://www.akabbo.ug/guidebook/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;short guidebook&lt;/a&gt; to help you make the best of it.&lt;/p&gt;

&lt;h2 id=&quot;what-next&quot;&gt;What next?&lt;/h2&gt;

&lt;p&gt;Now that Akabbo is active again, I intend to reduce the technical debt and improving the experience for campaign creators and donors. Some of the issues I intend to work on:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Add social authentication&lt;/li&gt;
  &lt;li&gt;Improve email messaging after campaign creation and donation&lt;/li&gt;
  &lt;li&gt;Add a share button to live campaigns&lt;/li&gt;
  &lt;li&gt;Optimize image size and responsiveness on mobile&lt;/li&gt;
  &lt;li&gt;TBD&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;final-plug&quot;&gt;Final plug&lt;/h2&gt;

&lt;figure&gt;
    &lt;img src=&quot;/img/great-times-with-maxime.jpg&quot; alt=&quot;Riding motorcross with Maxime and John&quot; /&gt;
    &lt;span class=&quot;marginnote&quot;&gt;Motorcross training with Maxime Van Pee and John Glaser. June 2019.&lt;/span&gt;
&lt;/figure&gt;

&lt;p&gt;I decided to eat my own dog food and put Akabbo to use. I have created a fundraiser for Dr. Loro’s mission to &lt;a href=&quot;https://www.akabbo.ug/campaigns/total-hip-replacement-surgery-for-sickle-cell-adolescents/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;deliver total hip replacement surgery for sickle cell adolescents at CoRSU&lt;/a&gt;. Dr. Loro was key to a seamless healing process when I broke my leg during Motocross training in June 2019.  Please donate what you can. Thank you.&lt;/p&gt;

&lt;p&gt;PS: I miss Motocross!&lt;/p&gt;
</description>
        <pubDate>Wed, 28 Jul 2021 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//relaunching-akabbo/</link>
        <guid isPermaLink="true">https://raybesiga.com//relaunching-akabbo/</guid>
        
        <category>crowdfunding</category>
        
        <category>community support</category>
        
        
        <category>crowdfunding</category>
        
      </item>
    
      <item>
        <title>The Power of Micro Money Transfers</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/arunjaykartakam.jpg&quot; alt=&quot;Arunjay Kartakam&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In &lt;a href=&quot;https://www.amazon.com/Power-Micro-Money-Transfers-profitable/dp/1912774615&quot;&gt;The Power of Micro Money Transfers&lt;/a&gt;, Arunjay not only educates us about remittances but also highlights the immense possibilities that they can play in building more inclusive credit, savings and insurance products for the unbanked and underbanked.&lt;/p&gt;

&lt;p&gt;He deploys a variety of examples from around the globe to showcase potential opportunities and tease out how new players might add value for both the recipients and senders of these remittances. His book goes to show how hot the remittance space is presently and I am keen to see what products and services emerge on both sides of a transaction.&lt;/p&gt;
</description>
        <pubDate>Wed, 30 Dec 2020 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//the-power-of-micro-money-transfers/</link>
        <guid isPermaLink="true">https://raybesiga.com//the-power-of-micro-money-transfers/</guid>
        
        <category>remittance</category>
        
        <category>cross-border</category>
        
        <category>remit</category>
        
        
        <category>Books</category>
        
      </item>
    
      <item>
        <title>The Fire Next Time</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/jamesbaldwin.jpg&quot; alt=&quot;James Baldwin&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Following the murder of George Floyd, I found myself searching to better understand race in America. I needed to know why a police officer found it even conceivable to put his knee, for 8 minutes, on the neck of George Floyd. I imagine that it is not customary practice for police officers to do this in the USA but I still needed to know why a civil servant thought that they might get away with this act.&lt;/p&gt;

&lt;p&gt;I’d heard a lot about James Baldwin but had not read any of his work. I figured this was a great opportunity to dive in. A friend, Mike Schwartz, recommended &lt;a href=&quot;https://www.amazon.com/Fire-Next-Time-James-Baldwin/dp/067974472X/&quot;&gt;The Fire Next Time&lt;/a&gt; and went ahead to lend me a physical copy. It was easily my favorite read of 2020.&lt;/p&gt;

&lt;p&gt;It was highly instructive and threw away my preconceived notions about the black American experience, and shed light on things and feelings that an outsider like me might never encounter. I am an African. A black one by definition. I have been to the United States of America numerous times over the last 11 years. First as a student researcher and later through work engagements and conferences. While I wear the same skin as my African American kin, I always felt that my experience of America was dissimilar to theirs. And I did not know why. Or rather, I did but in a way that was only skin deep. In reading this book, I made a small but important dent into figuring out this puzzle.&lt;/p&gt;

&lt;p&gt;Mr. Baldwin, in writing these letters to his 15 year old nephew, aims to elaborate on the negro experience and the burden that comes with it. Not only for black people but all Americans. He lays down arguments that are visceral yet elegant despite the complex nature of such an undertaking.&lt;/p&gt;

&lt;p&gt;Baldwin takes America to task by reminding it of what it has done in the name of history. A  history of white supremacy and fragility. The idea of an America that white people will go to any means to protect at the cost of black lives. Baldwin recognizes that the situation is dire but urges against falling into a state of helplessness. He urges the American people to tap into their collective morality and turn away from this lie as a precondition for progress. He asks them to question their thoughts and beliefs about race. As we know, the questions we ask ourselves change along with the times. And it is for this reason that we rewrite history but leave it open to interpretation.&lt;/p&gt;

&lt;p&gt;While he wrote these letters over 50 years ago, they are just as relevant today. Baldwin notes that human beings are each other’s only hope and advocates that Americans unite towards justice as a common goal. Amidst a kaleidoscope of emotions, I was left pondering the possibilities that America could accomplish if they attempted to answer the enormous question of race.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;Thank you to Mike, Arnab and Nikissi for your reviews and feedback on early drafts of this article.&lt;/small&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 30 Dec 2020 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//the-fire-next-time/</link>
        <guid isPermaLink="true">https://raybesiga.com//the-fire-next-time/</guid>
        
        <category>baldwin</category>
        
        <category>race</category>
        
        <category>books</category>
        
        
        <category>Books</category>
        
      </item>
    
      <item>
        <title>Is it ever good enough?</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/bill-wegener-unsplash.jpg&quot; alt=&quot;The product pre-launch pendulum swings&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Over the last four months, I have been working on a side project on nights and weekends. For a while is was all fun and games. Everything was alright until the realization that the speculative launch date I’d set for myself was way closer than anticipated. Suddenly, the tide has changed. The project no longer feels like a gimmick and seems to have taken on a life of its own. It demands time and focus. It in now a seemingly worthwhile self-placed challenge.&lt;/p&gt;

&lt;p&gt;As it turns out, either through foresight or self-awareness, I knew that a time might come when I’d hesitate to launch. It can be hard to fight the feeling that something you’re working is just not good enough. I veer between delight and despair. Sometimes, I think to myself, this is alright. Other times, I obsess over what might go wrong or does not work.&lt;/p&gt;

&lt;p&gt;I did not realize that past failures have altered me but this way. I now seek perfection as much as I seek to do. I no longer try. I want to get things done.  I’m encouraged by an intrinsic drive to get this out in the world. I want to launch this product. The questions lingers regardless. Is it ever good enough?&lt;/p&gt;
</description>
        <pubDate>Sun, 20 Jan 2019 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//is-it-ever-good-enough/</link>
        <guid isPermaLink="true">https://raybesiga.com//is-it-ever-good-enough/</guid>
        
        <category>product</category>
        
        <category>launch</category>
        
        
        <category>Startup</category>
        
      </item>
    
      <item>
        <title>What Don Norman Taught Me About Design In 3 Minutes</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/victor-nnakwe-625746-unsplash.jpg&quot; alt=&quot;Learning from Don Norman&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I recently came across a short video that Don Norman did for the NN Group regarding the principles of human-centered design. He distills his ideas so simply and concretely that I was not sure if I understood him or was just playing along with it. The finesse with which he does demonstrates his understanding of design principles in a way that anyone can understand. Here are the lessons I learned.&lt;/p&gt;

&lt;h2 id=&quot;find-the-right-problem&quot;&gt;Find the right problem&lt;/h2&gt;

&lt;p&gt;Many times, we are confronted with a problem to solve but do not take the time to assess whether that is the actual problem. Don maintains that you must always try to find the foundational root of the problem. Once you fix that, the symptoms of the problem, which may be what you were probably presented with, will disappear.&lt;/p&gt;

&lt;h2 id=&quot;think-of-everything-as-a-system&quot;&gt;Think of everything as a system&lt;/h2&gt;

&lt;p&gt;When working a problem, we may often get lost in the minutae of it and not investigate how it ties into the bigger picture. Don suggests that we think of everything as a system. Everything is interconnected. Optimization of the local does not mean global optimization within that system.&lt;/p&gt;

&lt;h2 id=&quot;user-experience-is-about-user-goals&quot;&gt;User experience is about user goals&lt;/h2&gt;

&lt;p&gt;While we may think of design as coming up with tools to alleviate a problem, that is not the ultimate goal that we seek when we design for users. Tools have to be understandable and usable but the most important thing is the goal of the person using your product. Are they able to delightfully do what they intend to do with the help of your product?&lt;/p&gt;

&lt;p&gt;Great lessons from a wonderful, wise old man. Link to the video &lt;a href=&quot;https://www.youtube.com/watch?v=rmM0kRf8Dbk&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 21 Aug 2018 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//what-don-norman-taught-me-design-pricinples/</link>
        <guid isPermaLink="true">https://raybesiga.com//what-don-norman-taught-me-design-pricinples/</guid>
        
        <category>Design</category>
        
        <category>HCD</category>
        
        
        <category>Design</category>
        
      </item>
    
      <item>
        <title>2017: My Year In Books</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/ato-aikins-283964.jpg&quot; alt=&quot;2017 Reading List&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;lh-copy&quot;&gt;I only read 8 books in 2017. Way less that I had planned. I could blame it on a busy schedule, or reading tons of Medium articles and newsletter content but I know that it was all my fault that I read so little. That said, I thought to share the reviews I wrote immediately after I read each book.&lt;/p&gt;

&lt;h3 id=&quot;the-guest-cat---takashi-hiraide&quot;&gt;The Guest Cat - Takashi Hiraide&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;I let 3 weeks pass while reading this book for the simple reason that I did not want to finish the last 17 pages. Takashi Hiraide has a way of narrating the strange, heart-tugging but inexplicably complex relationships humans have with their pets. His tone is prosaic and wistful in a way to make you care about how his wife and him are affected by a neighbor’s cat! It is a beautiful, little book.&lt;/p&gt;

&lt;h3 id=&quot;milk-and-honey---rupi-kaur&quot;&gt;Milk and Honey - Rupi Kaur&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;The diversity of expression that Rupi Kaur conjures to convey any specific feeling spans an extensive range. With exacting precision, she cuts through the meat to reveal the emotive bone of the hurting, the loving, the breaking, the healing. Her poetry is endearing yet heartbreaking, vulnerable yet cruel, relatable yet alienating. Milk and Honey is a journey. I enjoyed reading it. I really enjoyed reading it out loud.&lt;/p&gt;

&lt;h3 id=&quot;every-day-is-for-the-thief---teju-cole&quot;&gt;Every Day is for the Thief - Teju Cole&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;This is my first Teju Cole book and I must say I quite enjoyed it. Teju is an artful storyteller. He has a way of weaving vignettes of fleeting moments into concrete little scenarios that carry a narrative. He makes me want to visit Lagos and experience it the same way. The lead character at times grapples with cascading bribery and corruption but still loves Lagos and Nigeria for what it is. If anything, it feels more like a travelogue than an actual work of fiction but that does not take away from its brilliance.&lt;/p&gt;

&lt;h3 id=&quot;men-without-womem---haruki-murakami&quot;&gt;Men Without Womem - Haruki Murakami&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;The stories in this book conjures the familiar feeling of alienation you get from reading Murakami’s work. Like a sanguine dream you cannot recall five minutes after you wake up. The title of the book is rather peculiar. The lead characters in these stories are all men. These men are surrounded by women. Friends, aunts, coworkers, girlfriends, wives. Women. As such, the stories are not so much about men without women as they are about men who are lonely. Men who are estranged, lonely or lacking. What they seek to understand about the people in their lives is mostly fleeting. There is a proclivity to the ephemeral in the plot lines of all the stories. That said, you cannot help but revel in the needless detachment that Murakami serves up. You just kinda “take it and go”.&lt;/p&gt;

&lt;h3 id=&quot;the-everything-store-jeff-bezos-and-the-age-of-amazon---brad-stone&quot;&gt;The Everything Store: Jeff Bezos and the Age of Amazon - Brad Stone&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;A wonderfully researched, and well-written story of non-fiction about a smart, driven and rather peculiar man in Jeff Bezos. It documents the journey of Amazon as lived by Jeff without the rose-tinted lens that presents most autobiographies in the tech world. We come to see how Amazon uses the ruthless tact of the founder to decimate rivals, outmaneuver authorities and dominate entire market segments under a veiled obsession with customer satisfaction. Given the trend, I expect the next edition to document the expansion of Amazon from an online behemoth to an offline monopoly. That said, one of my favorite parts of this book is Jeff’s reading list at the very end. Now that is something worth taking a look at. It is uncanny that he only reads books of fiction.&lt;/p&gt;

&lt;h3 id=&quot;the-course-of-love---alain-de-botton&quot;&gt;The Course of Love - Alain de Botton&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;I thoroughly enjoyed reading this book. Alain de Botton lays out the idiosyncrasies of modern-day perceptions of love and relationships in a fun, accessible way. His ability to tell a seemingly ordinary story while interweaving simple explanations of historical anecdotes and philosophical interpretations comes, largely, to the fore. The most interesting thing about this book is that it seems to have been written with the eventuality that the couple it is about would come to read it. First, we get a brief glimpse into the courtship, and then the real story begins. The couple in question are Kirsten and Rabih. Their characters so are clearly defined yet markedly different and that is what propels this literary adventure. At times, it is hard to decipher if this is a work of fact or fiction. Highly recommend it.&lt;/p&gt;

&lt;h3 id=&quot;homegoing---yaa-gyasi&quot;&gt;Homegoing - Yaa Gyasi&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;A tragic tale about the role of Africans in the enslavement of their own. It starts with the bifurcation of the life path of two sisters on the Gold Coast in the late 18th century. One married off to a British slave trader, another kidnapped and sold into slavery. We then follow along with their journey and that of their descendants, on the Gold Coast, and across the Atlantic Ocean, in the United States over seven generations. It is complex yet empathetic and explores topics such as tribalism, spirituality, gender, convict labor and the prison industrial complex, immigration and drug abuse. A masterful effort from a first time writer.&lt;/p&gt;

&lt;h3 id=&quot;the-subtle-art-of-not-giving-a-fck-a-counterintuitive-approach-to-living-a-good-life---mark-manson&quot;&gt;The Subtle Art of Not Giving a F*ck: A Counterintuitive Approach to Living a Good Life - Mark Manson&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;Mark Manson may have a potty mouth but he sure knows how to articulate the anti-self-help mantra in a way that most millennials will understand. He presents us with the idea that caring more about less can bring happiness, success and better relations. He also reminds us that life should not just be peaches and cream. There is a lot to learn from failure and negative experiences. Take a look at this description:&lt;/p&gt;

&lt;p&gt;“Everything worthwhile in life is won through surmounting the associated negative experience. Any attempt to escape the negative, to avoid it or quash it or silence it, only backfires. The avoidance of suffering is a form of suffering. The avoidance of struggle is a struggle. The denial of failure is a failure. Hiding what is shameful is itself a form of shame.”&lt;/p&gt;

&lt;p&gt;Pretty great, right? I quite enjoyed it.&lt;/p&gt;

&lt;p&gt;Let’s see what books tickle my fancy in 2018 :smile:&lt;/p&gt;
</description>
        <pubDate>Sat, 20 Jan 2018 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//my-2017-bookshelf/</link>
        <guid isPermaLink="true">https://raybesiga.com//my-2017-bookshelf/</guid>
        
        <category>Books</category>
        
        <category>2017</category>
        
        
        <category>Books</category>
        
      </item>
    
      <item>
        <title>Securely deploy your progressive web app with Firebase and CircleCI</title>
        <description>&lt;p&gt;&lt;img src=&quot;/img/austin-neill.jpg&quot; alt=&quot;2017 Reading List&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;lh-copy&quot;&gt;So you’ve taken quite some time to build your Progressive Web App (PWA) and it is now time to deploy it. Where to start?! I am going to share the simplest method I have come across to get this done. The key platforms that we shall use for this specific process are Firebase and CircleCI. Okay, let’s get started.&lt;/p&gt;

&lt;h3 class=&quot;f4&quot; id=&quot;setup-firebase&quot;&gt;Setup Firebase&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;First, you need to sign up for &lt;a href=&quot;https://firebase.google.com&quot;&gt;Firebase&lt;/a&gt;. Once that is done, create a project on under the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Hosting&lt;/code&gt; tab. I created one called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ray-besiga&lt;/code&gt;. A modal will then popup with instructions to install the Firebase Tools on your command line.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;npm &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; firebase-tools&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Follow that up by navigating to the directory where your PWA is and run the following commands:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;firebase login
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;firebase init&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p class=&quot;lh-copy&quot;&gt;The first command signs you into the Google Firebase console, and the second one initiates your project. On your terminal, you should have the following output (comes with lots of fire emojis!!)&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;You&lt;span class=&quot;s1&quot;&gt;&apos;re about to initialize a Firebase project in this directory:

  /Users/username/Projects/fancy_new_project

Which Firebase CLI features do you want to setup for this folder?
Press Space to select features, then Enter to confirm your choices. (Press &amp;lt;space&amp;gt; to select)
❯◯ Database: Deploy Firebase Realtime Database Rules
 ◯ Firestore: Deploy rules and create indexes for Firestore
 ◯ Functions: Configure and deploy Cloud Functions
 ◯ Hosting: Configure and deploy Firebase Hosting sites
 ◯ Storage: Deploy Cloud Storage security rules&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p class=&quot;lh-copy&quot;&gt;Scroll down to hosting and select it by pressing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;space&lt;/code&gt; bar and then enter to confirm your choices. It then takes you to the project setup.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; Project Setup

First, &lt;span class=&quot;nb&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;s associate this project directory with a Firebase project.
You can create multiple project aliases by running firebase use --add,
but for now we&apos;&lt;/span&gt;ll just &lt;span class=&quot;nb&quot;&gt;set &lt;/span&gt;up a default project.

? Select a default Firebase project &lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;this directory: &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;Use arrow keys&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;don&lt;span class=&quot;s1&quot;&gt;&apos;t setup a default project]
  Tribe Kampala (tribe-kampala)
❯  Ray Besiga (ray-besiga)
  [create a new project]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p class=&quot;lh-copy&quot;&gt;Next comes the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Hosting Setup&lt;/code&gt; page. I went with the default setup below but we shall have to make changes for a number of reasons.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; Hosting Setup

Your public directory is the folder &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;relative to your project directory&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; that
will contain Hosting assets to be uploaded with firebase deploy. If you
have a build process &lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;your assets, use your build&lt;span class=&quot;s1&quot;&gt;&apos;s output directory.

? What do you want to use as your public directory? public
? Configure as a single-page app (rewrite all urls to /index.html)? No
✔  Wrote public/404.html
✔  Wrote public/index.html

i  Writing configuration info to firebase.json...
i  Writing project information to .firebaserc...

✔  Firebase initialization complete!&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p class=&quot;lh-copy&quot;&gt;I am building my PWA using Jekyll as my static site generator. By default, Jekyll builds to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_site&lt;/code&gt; while &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Firebase&lt;/code&gt; expects to deploy to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;public&lt;/code&gt; folder. We shall make changes to this in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firebase.json&lt;/code&gt; file, which is created along with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.firebaserc&lt;/code&gt; file when we run the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firebase init&lt;/code&gt; command. Edit the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firebase.json&lt;/code&gt; file to look like this:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;hosting&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;public&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;_site&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;ignore&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;firebase.json&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;**/.*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;**/node_modules/**&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;With that, we are ready to deploy our site. Firebase provides the following command for us to make it happen.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;firebase deploy&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p class=&quot;lh-copy&quot;&gt;You should now be able to navigate to the URL shown in the terminal in your browser to see your newly deployed website. Thanks Firebase! However, I’m sure you also realize that the deployment is manual. A cooler way to do it is with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;commit-to-deploy&lt;/code&gt; as done by Github. We are going to do this with CircleCI.&lt;/p&gt;

&lt;h3 class=&quot;f4&quot; id=&quot;setup-circleci&quot;&gt;Setup CircleCI&lt;/h3&gt;

&lt;p class=&quot;lh-copy&quot;&gt;Head on over to &lt;a href=&quot;https://circleci.com&quot;&gt;CircleCI&lt;/a&gt; , login with your Bitbucket or Github and add the project you wish to continuously deploy. At this point, you can create a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;circle.yml&lt;/code&gt; file or you can have one created for you. I prefer to make mine as CircleCI uses inference if you decide to build without making one. Mine is pretty basic and looks something like this:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yml&quot; data-lang=&quot;yml&quot;&gt;&lt;span class=&quot;c1&quot;&gt;# The Firebase tools want a v6.x version of Node but Circle CI&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# defaults to v4.x. Set the latest LTS version.&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;machine&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;node&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;6.10.3&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# Need to install firebase-tools so that the deploy works&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;pre&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;npm install -g firebase-tools&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# Need to tell Circle CI how to build the site&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;compile&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;override&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;bundle exec jekyll build --verbose&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# Circle CI expects some kind of testing to pass in order for the&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# build to be successful and deploy. Since you don&apos;t have tests&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# you can fake it by just returning true. http://gph.is/1MLPDWK&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;override&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;true&quot;&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# How you tell Circle to deploy to Firebase. The important thing to&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# note here is the FIREBASE_TOKEN env variable. See below.&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;deployment&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;branch&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;master&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;commands&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;firebase use default&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;firebase deploy --token=$FIREBASE_TOKEN --non-interactive&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Commit this file, push upstream to your remote, click build, and voila!&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;firebase use default

Error: Command requires authentication, please run firebase login

firebase use default returned &lt;span class=&quot;nb&quot;&gt;exit &lt;/span&gt;code 1

Action failed: firebase use default&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p class=&quot;lh-copy&quot;&gt;Oh wait, we’re not there yet. Looks like we are missing the token specified in the last line of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;circle.yml&lt;/code&gt; file. This token is essential as it grants access to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;firebase&lt;/code&gt; tool on the CI server. To fix this issue, we shall run the following command:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;firebase login:ci&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Once access if granted, you should a token similar to this in your terminal&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;Waiting &lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;authentication...

✔  Success! Use this token to login on a CI server:

1/1QDE1Do0PhmhPG60pQi1fnXoSOjnRhfMQLzBzlJSxiaWUmacndrIee-GEhxvs41B

Example: firebase deploy &lt;span class=&quot;nt&quot;&gt;--token&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$FIREBASE_TOKEN&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p class=&quot;lh-copy&quot;&gt;Copy that token, head on over to CircleCI, under ‘Build Settings’ in the ‘Project Settings’, click the ‘Environment Variables’ link and click the ‘Add Variable’ button. Make sure the name of the variable is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FIREBASE_TOKEN&lt;/code&gt;, the value being the token.&lt;/p&gt;

&lt;p class=&quot;lh-copy&quot;&gt;Now commit any changes you may have made in the repo, and watch the build. Success! Happy dance. Hope you enjoyed following along. Next time, we shall try a similar process with SemaphoreCI and Firebase.&lt;/p&gt;
</description>
        <pubDate>Thu, 30 Nov 2017 00:00:00 +0300</pubDate>
        <link>https://raybesiga.com//securely-deploy-pwa/</link>
        <guid isPermaLink="true">https://raybesiga.com//securely-deploy-pwa/</guid>
        
        <category>continuous deployment</category>
        
        <category>continuous integration</category>
        
        
        <category>deployment</category>
        
      </item>
    
  </channel>
</rss>
