<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abdulbasid Guled</title>
    <description>The latest articles on DEV Community by Abdulbasid Guled (@hyperthd).</description>
    <link>https://dev.to/hyperthd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F470457%2F16916887-c03d-4fbe-b0c4-ca2d65369614.jpeg</url>
      <title>DEV Community: Abdulbasid Guled</title>
      <link>https://dev.to/hyperthd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hyperthd"/>
    <language>en</language>
    <item>
      <title>Appwrite: Get it cause we write Apps</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Wed, 06 Jul 2022 03:44:30 +0000</pubDate>
      <link>https://dev.to/hyperthd/appwrite-get-it-cause-we-write-apps-1bi3</link>
      <guid>https://dev.to/hyperthd/appwrite-get-it-cause-we-write-apps-1bi3</guid>
      <description>&lt;p&gt;Let's pretend that today's my birthday and completely ignore what I did today to focus on an intriguing framework I came across recently, Appwrite. It's suppose to be an alternative to Supabase as another open source framework to setup a secure backend for you. It includes all the usual stuff such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database&lt;/li&gt;
&lt;li&gt;Authentication &lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Serverless functions&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It even includes the ability to get GEO related user data, something I've been wanting to work with for some time.&lt;/p&gt;

&lt;p&gt;Having worked with Supabase on personal stuff, and not getting to work with JS recently as my internship mainly uses Java, this really caught my eye. You can read more about Appwrite &lt;a href="https://appwrite.io/"&gt;here&lt;/a&gt; but I want to focus on the simplicity of getting it setup and using it.&lt;/p&gt;

&lt;p&gt;The service is self-hosted, something we can take advantage of using Docker (which I recommend any developer learn even if you won't ever use it, it's an amazing tool) and as for setting it up to run, even easier. Here's the example code shown on their site:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Init your Web SDK&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;client&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setEndpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://localhost/v1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setProject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;455x34dfkj&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// Register User&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;unique()&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;me@example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;password&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Jane Doe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, we just setup the client object, then we can do whatever we want. Whether it's creating a new account, a new session, or even a new JWT token, it's all done here. It even can connect with your preferred oAuth of your choice which is amazing.&lt;br&gt;
Their README and documentation is amazing by the way. &lt;a href="https://github.com/appwrite/appwrite"&gt;See what I mean here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While geared mainly to mobile developers (Flutter specifically targeted), any web developer can also taken advantage of Appwrite to create a secure backend for their purposes. Really makes it an easy decision to focus on the frontend. Now, services like this and Supabase are generally made with the intention of hiding the complexity of creating a backend service so you miss out on learning exactly how web servers are made. If you know how they're generally operated however, this service enhances that developer experience tenfolds. I plan on trying this out on a future project whenever I get the motivation to get back into web development. In the meantime, give it a try. You won't be disappointed.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Twitch is now unbanned from Telescope! Now go watch some streams!</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Tue, 08 Mar 2022 17:08:17 +0000</pubDate>
      <link>https://dev.to/hyperthd/twitch-is-now-unbanned-from-telescope-now-go-watch-some-streams-16g9</link>
      <guid>https://dev.to/hyperthd/twitch-is-now-unbanned-from-telescope-now-go-watch-some-streams-16g9</guid>
      <description>&lt;p&gt;Haven't posted in awhile. Might do this weekly with the more amounts of time I've been seeing lately.&lt;/p&gt;

&lt;p&gt;So I've managed to secure a co-op and have been working with an IT branch of Federal Government of Canada. I can't comment too much on that since, you know, security reasons... but it's been great. With this in mind, most of the work is not web related which is what I did a lot of more of in school so now to get my fix of that, what better way than to work with Telescope.&lt;/p&gt;

&lt;p&gt;So I'm picking up issues as I go, trying not to take too much since I got other responsibilities and y'know, there's students doing the course that should be doing the bulk of the work. As an alumni, it means I got knowledge of areas that others might not know which means reviewing more. That's what I've been doing, but with a side of coding here and there.&lt;/p&gt;

&lt;p&gt;That brings us to html-sanitizer. I worked on this last year when I did the course regarding spotify iframe tags, and now it's the same thing, but with Twitch iframe tags. I made a quick PR and merged it cleanly, until...&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xno3bWsF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://media4.giphy.com/media/vyTnNTrs3wqQ0UIvwE/200.webp%3Fcid%3Decf05e47vrzls3n050m6i8hex51wdnf0aflj7c2qhi8y6dpm%26rid%3D200.webp%26ct%3Dg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xno3bWsF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://media4.giphy.com/media/vyTnNTrs3wqQ0UIvwE/200.webp%3Fcid%3Decf05e47vrzls3n050m6i8hex51wdnf0aflj7c2qhi8y6dpm%26rid%3D200.webp%26ct%3Dg" alt="No God Please No" width="240" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZsmbdrvF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3m8hxo7enrpj94znuqjp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZsmbdrvF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3m8hxo7enrpj94znuqjp.png" alt="Didn't work sadly :(" width="880" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Turns out, it wasn't as simple as I thought. Aside from the wrong url being used, it turns out that there's some extra required properties that were needed; Chief among them the &lt;code&gt;parent&lt;/code&gt; property.&lt;/p&gt;

&lt;p&gt;The parent property is the domain that's hosting the embedded content. In users' blog posts, it would be their blog post site. In Telescope, it would be what our &lt;code&gt;WEB_URL&lt;/code&gt; refers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;localhost in &lt;code&gt;DEV&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;dev.telescope.cdot.systems in &lt;code&gt;STAGING&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;telescope.cdot.systems in &lt;code&gt;PRODUCTION&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I have to extract the iframe, modify the parent property and return that if it's a twitch iframe. I was beginning to think that wasn't possible until&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vtd-7ze7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://c.tenor.com/_l6JIUoVnZAAAAAd/there-is-no-%250Atry-do-or-do-not.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vtd-7ze7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://c.tenor.com/_l6JIUoVnZAAAAAd/there-is-no-%250Atry-do-or-do-not.gif" alt="Just do it" width="498" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The answer was in an optional parameter you can pass into sanitize=html's constructor that takes the form of a transform function that will transform a given tag into another tag. In our case, we just want to change an iframe to an iframe with the properties we want &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GDqIZ4kI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s4t3datz5csaj1jxrx6z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GDqIZ4kI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s4t3datz5csaj1jxrx6z.png" alt="Iframe Transformation!" width="880" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We simply create a new url with the given iframe, set it's parent attribute to be the web url depending on what environment we're in, then do some string manipulation to transform the escaped characters back into what they should be. We only do this for twitch iframes though, any other iframe would pass normally. This is something future students can look to modify if ever a need to update this function to change iframes from other sites that have other properties needed.&lt;/p&gt;

&lt;p&gt;It took some time, and I was also really confused at numerous times looking at this. Today, my PR was finally merged in. It ended up being one of my most looked at PRs on the project. The parser service also uses this file too, so I modified that part too. Now twitch is no longer banned from our sanitizer and telescope users can now view embedded twitch clips and videos!&lt;/p&gt;

&lt;p&gt;As it turns out, whether you're a student or not, there's always something to learn. Now get out there and work, for there's no success without failure. You don't try; you either do the work, or not.&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>The importance of reviewing code properly, and managing a project repo</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Sat, 22 Jan 2022 16:35:15 +0000</pubDate>
      <link>https://dev.to/hyperthd/the-importance-of-reviewing-code-properly-and-managing-a-project-repo-3dgb</link>
      <guid>https://dev.to/hyperthd/the-importance-of-reviewing-code-properly-and-managing-a-project-repo-3dgb</guid>
      <description>&lt;p&gt;Btw, I seem to have lost my Hacktoberfest shirt. I'll need to find that since we need pics of these.&lt;/p&gt;

&lt;p&gt;With the semester over, I feel like it's the perfect time to reflect on what I did outside of my courses rather than inside, because to be honest, this semester wasn't one that I enjoyed a lot. Not that my courses were difficult, but that they felt like they had no place at this point in my program.&lt;/p&gt;

&lt;p&gt;So onto what you really want to read. With a lighter school schedule, I got an opportunity to continue working with Telescope, something not many of my peers appear to be doing. But wait Abdul, you're not doing the open source courses this time. Why bother? &lt;/p&gt;

&lt;p&gt;Open-source is a lot like the web in that it evolves as time passes by. A great example of this was the recent switch to &lt;code&gt;pnpm&lt;/code&gt; from &lt;code&gt;npm&lt;/code&gt;. Installing and running scripts has been so fast. I specifically remember researching about this around February last year, however, never got to look into this further since the microservice wave came crashing down.&lt;/p&gt;

&lt;p&gt;So as a result, I ended up slowly taking over the role of reviewing PRs and less developing actual code for Telescope. In the last 2 months, I think I only committed about 2-4 PRs in total, including this &lt;a href="https://github.com/Seneca-CDOT/telescope/commit/5b6dbcfc439f5fa4657e27d0936b8d147219a761"&gt;recent one adding a .dockerignore file to our search service&lt;/a&gt;. Reviewing code is important since any little mistake means that the entire codebase breaks down. &lt;/p&gt;

&lt;p&gt;As a result, I tried to pick PRs that didn't do much coding or did minimal editing. Smaller PRs are always easier to review than larger ones. Of course, there were times this couldn't be avoided. The main culprit being all the status service PRs and search related PRs. &lt;/p&gt;

&lt;p&gt;As the term goes by, I'll end up stuck at my co-op doing work with spring/camel and have to shift my focus away from Telescope. Naturally, this meant I had to focus on a few less PRs while also spending time mainly reviewing code. Ofc, there's stuff I miss whenever I review code, and Search ended up breaking again (As if me breaking it once wasn't enough). The group this time is much bigger than the 10 I was apart of so that means more progress maybe. I like the ideal of overseeing a repo's evolution and my unique status as a Telescope alumni gives me a chance to sort of help out as a senior developer. Always gotta get that resume stacked.&lt;/p&gt;

&lt;p&gt;My goal aside from my co-op though, is to continue looking into Supabase and search related content along with JWT related issues I never got to look into. If React Native stuff gets going, I'll work on that stuff too. But the main idea is to be a sort of extra eyes since there's more students working on Telescope than ever before. Wish them luck, they'll need it.&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Working with Docker and Python: Learning as I go</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Fri, 08 Oct 2021 01:09:30 +0000</pubDate>
      <link>https://dev.to/hyperthd/working-with-docker-and-python-learning-as-i-go-245g</link>
      <guid>https://dev.to/hyperthd/working-with-docker-and-python-learning-as-i-go-245g</guid>
      <description>&lt;p&gt;Still alive and living well. I assume the same for you guys as well.&lt;/p&gt;

&lt;p&gt;Not too much has changed for me recently. Trying to find an internship opportunity is tough, so I've been making the most of my free time and continued working with stuff that I'm unfamiliar with. &lt;/p&gt;

&lt;p&gt;The big thing for me is a product microservice that will operate entirely via docker. I'm pretty poor right now so hosting the site is not an option, but having it run via docker gives me alot of options. I can separate the different pieces apart and have them run independently without having to worry about one piece potentially failing and ruining another aspect. Almost like I worked on something like this myself...&lt;em&gt;cough&lt;/em&gt; Telescope &lt;em&gt;cough&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Anyway, my server portion is operating different from how I would usually go about making it. I'm using Flask with Python this time as opposed to NodeJS. I really loved working with python and wanted to get more exposure to other web frameworks other than express for making web servers. This was a pain for me to learn though, especially when trying to tie the mongodb database together. &lt;/p&gt;

&lt;p&gt;Right now, my server is working fine. I plan to have sensitive information stored in a &lt;code&gt;.env&lt;/code&gt; file as usual. Grabbing them was difficult in coordination with the docker-compose file I had going but I plan on do this probably after I finish my frontend service, which is going to be developed in Vue! Need more frontend love and been wanting an excuse to use VueJS for awhile.&lt;/p&gt;

&lt;p&gt;My experience with volumes and redis has helped me alot with getting my mongodb service working. Redis would be amazing to use in the future and I definitely have plans to use it in the future. I probably will focus purely on JS/TS after this service is complete though. I feel more in tuned with JS and what it brings vs Python for my use cases. It's also 1 language so easier to work with. You can follow along with me &lt;a href="https://github.com/HyperTHD/Product-Microservice"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now to find some Telescope bugs to fix. Or maybe they'll find me, either way, we hopefully get something exciting to do. &lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>How the covid-19 pandemic will define what is otherwise, a really bad moment</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Fri, 30 Apr 2021 23:25:57 +0000</pubDate>
      <link>https://dev.to/hyperthd/how-the-covid-19-pandemic-will-define-what-is-otherwise-a-really-bad-moment-ecc</link>
      <guid>https://dev.to/hyperthd/how-the-covid-19-pandemic-will-define-what-is-otherwise-a-really-bad-moment-ecc</guid>
      <description>&lt;p&gt;My grades are out. They're really good. Considering I took way too many classes than I really needed to, I'm happy with my results overall. So what's with the title?&lt;/p&gt;

&lt;p&gt;Well, this summer is supposed to be an internship moment for myself and many others in my position. We should be gaining valuable experience in the industry. This is mostly to learn and to grow, even if it's a requirement for us to graduate. For many like me, however, graduation may not ever happen.&lt;/p&gt;

&lt;p&gt;The covid-19 has hit every person in the world hard, especially the young folks. Businesses especially are having to make very tough decisions. I don't envy the business owners that have had to cut costs by laying off employees, but they should at least be aware of the consequences that will have. In my attempts to search for a co-op opportunity, I have applied to over 50+ jobs, both on my job board that my school has, and on other external sites such as linkedin, indeed, talent.com, and etc. I have only received 2 interviews. The first 1 rejected me after about 2 weeks. The second one is a pending rejection at this point, because internships start on May 3rd, and I don't anticipate an offer on the weekend. For students like us, it's very depressing. I know so many individuals that are uniquely qualified, and yet, aren't ever given a chance to shine. I don't want to be doing a minimum wage job for the rest of my life. That's why I came back to school in the first place. The reality is that this pandemic may not even end, anytime soon.&lt;/p&gt;

&lt;p&gt;Although vaccines are starting to ramp up, the damage that has been done to the economy will be ever-lasting. I'm now left to ponder what to do next. I'm almost finished school at this point, but the amount of companies that have not said a word to me is astonishing. Consider this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cICv_ocR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjkhe1ol0zy3rqnv8tkc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cICv_ocR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjkhe1ol0zy3rqnv8tkc.png" alt="Rejection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don't want to show my resume, but I highlighted my skills in web-development as well as what I've done in the past 2+ years. Yet, that still is not enough.&lt;/p&gt;

&lt;p&gt;Or even this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vC9vj5VO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvvj7tshtk4wkhbdojce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vC9vj5VO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvvj7tshtk4wkhbdojce.png" alt="Ridiculous offer"&gt;&lt;/a&gt;&lt;br&gt;
This is a junior data scientist co-op job, and needs 1 co-op under their belt. I look at jobs like this and just get demoralized. &lt;/p&gt;

&lt;p&gt;At this point, I don't even know what to do. I'll more than likely have to exercise the exempt option to have this co-op not count towards graduation, but that just means that those that were quite literally lucky enough to get a co-op will be more valuable due to their experience as opposed to someone in my shoes. &lt;/p&gt;

&lt;p&gt;More scary, however, is that I still am required to have at least 1 co-op under my belt. How is this even possible when most companies aren't willing to take a chance at people like us? All this does is push my graduation date further, and I'm not getting younger. I want experience, a chance to grow. Telescope was exactly that chance. Now, I want to know if anyone else out there in the world would be willing to do the same&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A perspective overview on my open-source journey. DPS911 Blog #14: Telescope 2.0 release</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Sat, 24 Apr 2021 02:01:54 +0000</pubDate>
      <link>https://dev.to/hyperthd/a-perspective-overview-on-my-open-source-journey-dps911-blog-14-telescope-2-0-release-26pc</link>
      <guid>https://dev.to/hyperthd/a-perspective-overview-on-my-open-source-journey-dps911-blog-14-telescope-2-0-release-26pc</guid>
      <description>&lt;p&gt;Where do I even begin?&lt;/p&gt;

&lt;p&gt;Well, this has been a crazy ride the last 8 months. Today, we successfully shipped Telescope 2.0. It's rather bittersweet. Nothing too exciting really happened, and I think I liked it better that way than how many of our releases went, with many PRs going up last second. Looking back, it's been an up and down ride with many positives outweighing the negatives.&lt;/p&gt;

&lt;p&gt;First of all, I need to thank the people I worked with during this whole saga. I'll list them in no apparent order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://moho472.medium.com/"&gt;Mo&lt;/a&gt;. I wouldn't be taking this course, or the predecessor, DPS909, if not for him. I didn't even know about our professor, David, at the time, but the way he was talking about him and just seeing how enthusiastic he was a year ago in our 3rd semester made me really curious. It would just be alot of positive stories and that made me really excited. Thanks so much, man! You've made working on backend/microservice related issues and Satellite a blast to work with.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/chrispinkney"&gt;Chris&lt;/a&gt;. You had some of the most quirkiest blogs I've ever read. Your user service was also one of the more annoying things I've had the unwanted pleasure of reviewing. I don't regret one bit of it. You've been a joy to be around, and my only regret is that our open source journey was not in-person. That said, that didn't stop you from helping me out time and time again. I appreciate that, and best of luck now that you're done CPA!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://birtony.medium.com/"&gt;Anton&lt;/a&gt; and &lt;a href="https://ilya-zhurik.medium.com/"&gt;Ilya&lt;/a&gt;. You both have pretty much been my senpai this semester, since you both are a year ahead of me in the same program. I've always enjoyed asking you about how the program was for you, and that has smoothly transitioned into our work on both Telescope, and the Linux system development pro option we all ended up taking together. While you both may be graduating soon, I hope that what we've done together this semester will always stay with you both. I know I will for sure.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/yuanleemidori"&gt;Yuan&lt;/a&gt; and &lt;a href="https://roycedev.medium.com/"&gt;Royce&lt;/a&gt;. Thank you for allowing me to not focus so hard on accessibility with the front-end. I always loved reviewing your PRs, even if I was never originally pinged to do so. I know my search context helped you in particular, Royce, so I appreciate the shout-out! I know who to call if I ever need help with accessibility and color related issues in the future.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tonyknvu.medium.com/"&gt;Tony&lt;/a&gt;. Your work in the PWA PR and Feed-Discovery service was awe-inspiring. Even more important, your work in figuring out what components needed to be ported over with your list at the beginning of the semester was vital to us being able to switch to NextJS as quickly as we did. I only wished you weren't in your co-op so you could've been more active in our triage meetings. Stay strong, friend! You got a bright future ahead.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pedrofonsecadev.medium.com"&gt;Pedro&lt;/a&gt;, Duc, and &lt;a href="https://x7z.net/"&gt;Minh&lt;/a&gt;. Thank you all for allowing me to stay away from the 2.0 design! CSS has always been my weakest area and the work you all have put into it has been magnificent. Reviewing the SignUp PR was just about the most I've done for you all, but that was always good enough for me! You all gotta show me Adobe Illustrator though, that software is a thing of beauty.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://whataboutopensource.blogspot.com/"&gt;Josue&lt;/a&gt;. You caught alot of mistakes that I've made in many of my PRs. Most of all, that extra nudge you gave was the kind of support I really needed when going into more of the DevOps side of things. It's been a pleasure both learning and seeing you work your magic. Hopefully, we can continue working together in CDOT, assuming you convince Chris Tyler to give me an offer. :D &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.humphd.org/"&gt;David&lt;/a&gt;. Your wisdom is something I will never, truly, forget. I can't begin to imagine how hard it must been when you're a professor and you're expected to know the answers to stuff you barely know of, and yet, you always seem to find a way to make things work. Whether intentional or not, you've been great technical and emotional support at times when I've needed them most. It's been an honour being your student the last 8 months, and it's an experience I will keep with me well until my career in the not so distant future.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There have been many others that have come and gone in my open source journey. Many of my colleagues that took DPS909 in the Fall did not take DPS911 this semester. Royce and Mo were the only ones I were familiar with heading in. That didn't stop me from being me, very hyper and active in both slack and github. &lt;/p&gt;

&lt;p&gt;With that emotional piece outta the way, I'll discuss about what I did this week.&lt;/p&gt;

&lt;p&gt;I landed 3 PRs this week. All 3 can be found below: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2188"&gt;Fixes #2186: Signup Flow fails with feed-discovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2177"&gt;Fixes #1693: Audit of all asynchronous routes in backend folder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2165"&gt;Fixes #1938: Updated healthCheck for Posts service&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not much work this week, but each of these PRs held some sort of importance to me, since 2 of them were updates/audits and the first one was a critical bug fix for our front-end.&lt;/p&gt;

&lt;p&gt;In terms of what I reviewed this week, Chris's PR that I mentioned last week to fix the user e2e tests was one. Royce had a PR that I reviewed this week, you can find it &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2176"&gt;here&lt;/a&gt;. Other than that, not much reviews from me. I did do an extensive review of Minh's Search related PRs to address advanced search features, but those did not land in time for 2.0. I blame my lack of reviews this week on final exam week, but w/e. What's done is done!&lt;/p&gt;

&lt;p&gt;Open-Source has really been a fun adventure for me to really dig into. When I first enrolled in the Fall, I wasn't really sure about it, only that it allowed me to practice with other languages I never got to use since my program always loved C++. It's really been more than just languages, but the tools and skills you learn and use. It's stuff that sticks with you forever. For example, CI/CD pipelines were one area that I really fell in love with and was always fascinated with. Unit testing was a pain that I had to learn eventually, and it gave me alot of trouble. It's a skill that is invaluable though. With the recent Rogers shutdown due to a software update, it seems very clear that both tests and CI/CD are very important and should be a stable in software development.&lt;/p&gt;

&lt;p&gt;It wasn't without it's bumps, however. My ending with hacktoberfest was very lackluster, and my release 0.3 was about as terrible as can be. With all this in mind, I managed to bounce back each time. Even as recently as the regression I introduced to the search feature, I found the bug fix and made a PR that fixed it in no time. It won't always be this quick, but I believe it's important for people to make mistakes, even big ones sometimes, because we never grow from them. This is an industry that evolves rapidly, and no one is ever perfect. Each time I was down, I got back up, and it showed in my work this semester.&lt;/p&gt;

&lt;p&gt;When I started DPS911, I wanted to make it very clear that I would be willing to work on all aspects of telescope. I went hard with the typescript port, and even updated our front-end &lt;a href="https://github.com/Seneca-CDOT/telescope/blob/master/docs/front-end.md"&gt;docs&lt;/a&gt; to make them more universal than they were before. I signed up early for the microservices, because I knew that having the skillset with the technology stack used would be vital to growing in this industry. It wasn't easy, but nothing is when trying out something new. When my posts service finally launched in staging and production, it was an amazing feat to see. Full-stack was always an area I enjoyed, because I wasn't ever restricted with where I worked. Being flexible is also important in this industry since you can move from one team to another and not lose track of standards used. This showed in the work I've done; I've worked on the front-end, back-end, DevOps related stuff, and Satellite. I'm proud of all the work I've done in each area, big or small, and I hope everyone else is too!&lt;/p&gt;

&lt;p&gt;Most important of all, the connections I've made here and in the broader community is something I'll never forget. It's really made me interested in starting a project and making it open-sourced. If I don't get a co-op this summer, we are allowed to exempt 1 from our graduation requirements. I think I'll use that time to dig in and start something like this. It would certainly be interesting to see how far it goes.&lt;/p&gt;

&lt;p&gt;It's funny when you think about it. My first contributions to Telescope was an update to our environment documentation, and my PR to audit the backend and microservices is also the final PR before Telescope 2.0. To see the growth I've made in front of me is really inspiring. &lt;/p&gt;

&lt;p&gt;With all this in mind, I wanna thank you, the reader, for keeping up with my weekly posts. I know I lack any sort of images at times, but I believe that words are the best way for me to convey how I'm feeling at a specific point in time. Where do I go from here? Well, I'm still trying to get a co-op, but this summer will be my first free summer in 3 years. I started BSD in Winter 2019 so that meant that I had to go to school in the summer while those that started in the Fall 2018 semester got a summer off. It's certainly a time to reflect, but a time to relax and enjoy myself for sure. I got lots of stuff I wanna do this summer.&lt;/p&gt;

&lt;p&gt;That just about concludes my journey in Seneca's open-source professional options courses. It's not the end of my open-source journey. I wanna continue contributing to Telescope in any way if possible and I'll make my intentions clear. With my lighter course load in my final year of school, helping Telescope go beyond where it's at will be something I look forward to doing, hopefully if given the opportunity. Spreading what I learned with those that take over Telescope after our group will be something alright.&lt;/p&gt;

&lt;p&gt;Thank you to probably the most resilient group we've had, doing this course in the middle of a global pandemic. It was never going to be easy, but it was well worth it. Until next time, stay safe everyone! &lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>DPS911 Blog #13: One more step until the finish line</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Mon, 19 Apr 2021 02:15:18 +0000</pubDate>
      <link>https://dev.to/hyperthd/dps911-blog-13-one-more-step-until-the-finish-line-2b79</link>
      <guid>https://dev.to/hyperthd/dps911-blog-13-one-more-step-until-the-finish-line-2b79</guid>
      <description>&lt;p&gt;And another late post. In my defense, I was still recovering from my covid-19 vaccine this weekend and work/ramadan got me really occupied. &lt;/p&gt;

&lt;p&gt;Not much longer left to go for me. This upcoming week will be my final week in Seneca's open source courses. It was a crazy ride, from good, to bad, then to really, really good. It's been a hell of a journey. I'll reflect on this more in the final write up, so stay tuned for that.&lt;/p&gt;

&lt;p&gt;This week, I worked on porting our ElasticSearch client to Satellite. That one was more of a pain in the ass than I thought it would be, mainly because it wasn't starting. Also, intellisense wasn't as strong as it was with Redis, so I had to turn to documentation alot, both for regular and the mock versions of ELS.&lt;br&gt;
You can find my PR for that, &lt;a href="https://github.com/Seneca-CDOT/satellite/pull/13"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I also worked on updating our posts service to use Redis from Satellite, and audit the posts service to use the createError() function which once again, also came from Satellite. You can find that PR &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2165"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have alot more long-term issues still assigned to me, that I would love to continue working on if given the chance. I really loved working on Telescope throughout the past 4 months, and getting a chance to continue working on this would be great for myself. Most likely though, I'll end up dropping them. &lt;/p&gt;

&lt;p&gt;There's an interesting post to update the hero banner to use quotes from former open source students about their journey in open-source. It's this issue &lt;a href="https://github.com/Seneca-CDOT/telescope/issues/1974"&gt;here&lt;/a&gt;. I kinda wanna take this on, because I think it'll be a fun way to end my journey. Also, I wanna add a quote of my own here so yeah, we'll see where that goes.&lt;/p&gt;

&lt;p&gt;Otherwise, the rest of my work will come in the form of audits, both in the microservices, and the backend. The parser service is not ready to be served yet, so the backend code will more than likely have to stay for the time being. I got some audits I wanna do there. Good for me, since this week is final exam week. No big issues for me.&lt;/p&gt;

&lt;p&gt;As for what I reviewed this past week, I got some worth mentioning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chris literally just put up a PR as I'm writing this, so I'll just add this PR in since I got tagged for review, and will likely review it. (Just had an everybody hates Chris moment, but nah, I love you, G). &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2173"&gt;Closes #2054: Fix users MS e2e tests &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/satellite/pull/14"&gt;Add shutDown() to allow killing connections&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2151"&gt;Fix #1968 update Unsplash photos list for image service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2148"&gt;SignUp Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2143"&gt;Fix typo in users URL for status service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2133"&gt;Use Redis for auth service session storage in production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2116"&gt;Add auth middleware to Users service &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2113"&gt;Fix: add MS search info to env.staging and env.production&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My professor, David, once again ended up bearing the bulk of PRs that I reviewed this week. Maybe I'm trying too hard for those brownie points and marks. :D&lt;/p&gt;

&lt;p&gt;Next time, self-reflection. I did open-source for 8 months now. My final blog post of the semester will probably be one of my longest ones yet. The past, the present, and the future all in one. Be prepared for a long read. In the meantime, &lt;a href="https://www.youtube.com/watch?v=DZX4jHxLcNY&amp;amp;ab_channel=ThejetermanRBLX"&gt;this video&lt;/a&gt; is basically how I'm feeling right now approaching this final week.&lt;/p&gt;

&lt;p&gt;PS: I got my covid-19 moderna vaccine on Thursday, so I now got a bit of protection against this deadly virus. I really want this lockdown to go away so that I can enjoy life again. I've been cooped up in this home for way too long.&lt;/p&gt;

&lt;p&gt;PS PS: My professor's good friend, Chris Tyler, recently put up a job posting for CDOT researchers. Being in my 6th semester of BSD, and needing a coop job for the summer, I applied straight up. David, I know you're going to be reading this. Please give me a great reference, this CDOT job would be an absolute dream for me to continue doing open-source work and gain even more valuable work experience in software development. &lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>DPS911 Blog #12: The beginning of the end</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Sat, 10 Apr 2021 02:33:14 +0000</pubDate>
      <link>https://dev.to/hyperthd/dps911-blog-12-the-beginning-of-the-end-2pic</link>
      <guid>https://dev.to/hyperthd/dps911-blog-12-the-beginning-of-the-end-2pic</guid>
      <description>&lt;p&gt;Only 2 blog posts until I can stop writing these things...thank god.&lt;br&gt;
Well, maybe I'll drop the odd post here and there!&lt;/p&gt;

&lt;p&gt;After last week's bout, things sorta resolved themselves just nicely. With less school work to do this week, this was the week I've been waiting for to really just relax and take some time to look after myself, which included going for some walks. The weather was amazing this week, you can hardly blame me for that.&lt;/p&gt;

&lt;p&gt;In terms of reviews, I got back to doing them, and I did alot. David ended up bearing the bulk of PRs I reviewed this week since the main story was getting a fully functional user service. That, and some other fixes related to our staging and production servers. Talking about all of them would mean I'd be writing this blog post forever, so here's a list of all the PRs he made that I reviewed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2060"&gt;Use hashed email as the id for users in firestore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2061"&gt;Increased letter spacing for telescope-post-content&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2088"&gt;Rework User to use proper JWT payload data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2089"&gt;Remove /myfeeds page, components, and deps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2098"&gt;Fix login on localhost, add WEB_URL env variable support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2099"&gt;Allow Vercel preview PR URLs for auth redirects on staging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2104"&gt;Don't use / as webUrl, prefer NEXT_PUBLIC_WEB_URL or VERCEL_URL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2107"&gt;Don't assume https:// for WEB_URL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These weren't the only PRs I reviewed of course. Today, I was with David helping Ilya get his search service ready to be merged in. This was a service we've been waiting for quite some time, as I had a PR that was blocked (This PR was &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2012"&gt;here&lt;/a&gt;, however, like with the jest timeout PR I had, rebasing master onto here ended up closing the PR altogether. Good riddence I say, that was the last of my PRs with messed up timeframe of commits and the temporary fix was merged in by Josue not too long ago. I'll file a new PR to get this sorted out next week). Calvin's parser service also landed today, which means that all of the microservices we've been developing since 1.8 have now finally all landed.&lt;/p&gt;

&lt;p&gt;I also did a number of reviews for some front-end related PRs. Namely, two from Yuan, which were the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2082"&gt;Add link colors to palette; change link color in dark mode about page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2094"&gt;Only show navbar when scrolls to post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;She also that &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2081"&gt;this PR&lt;/a&gt; that I reviewed as well to update our environment-setup docs to reference that they now use microservices. A good change, and one that will probably be changed again once the backend code is fully removed.&lt;/p&gt;

&lt;p&gt;The more complicated PR was &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2005"&gt;this one by Minh&lt;/a&gt;. He's updating the SearchBar design, and this means he needs to tweak with the new Search Context values that I provided in the new SearchProvider. The updates have been very slow, but since he's using logic that I made, I was able to provide my most extensive review ever on a PR. I think I've requested more changes in this PR alone, than I have in any PR I've wrote or reviewed this entire semester. His PR has been sitting for almost a month now and we can't have PRs sit in hell for that long of a time, so we're splitting parts of his code into another issue so we can land his PR in time for 2.0.&lt;/p&gt;

&lt;p&gt;As for work that I did, well, I had a couple of PRs that got in successfully. My SearchContext bug was resolved, and it finally got merged in. You can find that PR &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2066"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I also updated the jest e2e timeout settings so that our github actions don't timeout on the end-2-end tests and randomly fail CI for whatever reason. You can find that PR &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2092"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My big PR for this week, however, came in today after starting on it yesterday. Mo had two tasks on Satellite, of which, he was focused on the caching, while the other, the porting of redis, was sitting for a long time. I asked him if he was going to continue on with that, to which he mentioned that he didn't have the time. Knowing that my service, and Calvin's parser service needed redis in satellite, I finally decided to fork Satellite over and complete the port with his permission. I got a PR up with most of the code working, but the tests hanging up. While working with Ilya with his search service, I got some time with David to help debug this, and it essentially came down to how I was turning on and turning off redis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ikU7-SPw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nx912mpjddsx9t72ru4l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ikU7-SPw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nx912mpjddsx9t72ru4l.png" alt="Redis test code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The afterEach made alot of sense. Using redis.disconnect() would not work here, because the test would run again and fail due to a connection being terminated. So I had to use redis.quit(). The real issue was in my beforeEach. Starting the redis server here was tough. So on David's advice, I made the following changes in the redis.js file:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CvYocKAY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wpe7xlmkopgvgficclzm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CvYocKAY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wpe7xlmkopgvgficclzm.png" alt="Updated RedisConstructor function"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The try/catch was removed, the password code was removed, and I passed an options object to the function that returns a new redis constructor, using the REDIS_URL and the options object. In the test case, I called the createClientFunction in my beforeEach, and then, I used the done function that jest provides. It's an awesome function that helps with ensuring that asynchronous connections are properly handled with. I never wrote database tests before, so this is something I was amazed with. The redis test itself was very basic, just a simple redis ping command that returns "PONG". Applying the changes, and bam! The test closed up perfectly with no problems. A push and merge later, and I was good to go. I did rob Chris the chance to review it since I merged it without any reviews, which again, I need to stop doing. I have this feeling where if something's watching me code and it works fine, then I can just merge it in no questions asked. This is what let me to my problems last week, and luckily, that didn't occur this time. Satellite was updated and redis is now available publicly for all services that need it.&lt;/p&gt;

&lt;p&gt;I wrapped up this week by reviewing and approving a PR by Josue to add the search service's correct values to our staging and production environment values. You can find this &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2113"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The two main issues I want to tackle for next week are the health check for the post service (&lt;a href="https://github.com/Seneca-CDOT/telescope/issues/1938"&gt;https://github.com/Seneca-CDOT/telescope/issues/1938&lt;/a&gt;) and the search service being used in the front-end (&lt;a href="https://github.com/Seneca-CDOT/telescope/issues/2014"&gt;https://github.com/Seneca-CDOT/telescope/issues/2014&lt;/a&gt;). These issues should be simple enough to get in so I'll try and see if I can start them early on Sunday since I'll be busy with work this weekend. With our second-last update in, alot of PRs will be rushed in the next 2 weeks. 2 more weeks to go before my journey in open-source is on a pause. Until next week, see you guys next time!&lt;/p&gt;

&lt;p&gt;A small PS: I got Ramadan next week starting on Monday most likely, which means I'm gonna be fasting for the next month starting next week. Happy Ramadan to all observing! This government shutdown and pandemic cannot come soon enough.&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>DPS911 Blog #11: The importance of patience</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Sun, 04 Apr 2021 02:59:28 +0000</pubDate>
      <link>https://dev.to/hyperthd/dps911-blog-11-the-importance-of-patience-31ld</link>
      <guid>https://dev.to/hyperthd/dps911-blog-11-the-importance-of-patience-31ld</guid>
      <description>&lt;p&gt;First of all, thank you David for being there for me this week. I definitely needed that boost of confidence. Go read his stuff &lt;a href="http://blog.humphd.org/"&gt;here&lt;/a&gt;. You won't regret it.&lt;/p&gt;

&lt;p&gt;This week, I took a break from the microservice hell I was in and wrote a PR to create a Search Context for our search related props. You can find that PR &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2046"&gt;here&lt;/a&gt;. I ended up coding the initial context in about 20 minutes which wasn't so bad. The real problem came with reviews...&lt;/p&gt;

&lt;p&gt;So, I only got like about 2 reviews only for this PR. I wasn't expecting such a low turn-out, especially considering this was for a piece of the front-end which most of our group was working on. Probably because I did alot of testing, and I hated having to rebase my PRs so frequently, I merged the PR in myself. Suffice to say, while the github actions tests were all green, I re-introduced a bug that we had fixed months ago, which was the search bar making a request on every letter typed. You can imagine my surprised when I was working on some other work for other classes and got a message that it was broken.&lt;/p&gt;

&lt;p&gt;I got cocky and impatient and it ending up biting me pretty good. I quickly went about searching for a fix, and it took an hour of looking at the code, but it was simple. I just needed to also include the textParam that we had as a context value so the search results component used that value instead of the actual text when making the network request. We have a useEffect that gets ran in the context everytime the text changes, so that's what was causing the bug. I went to file the PR and...&lt;/p&gt;

&lt;p&gt;My remote master was ahead of all my other branches, and thus, it was bringing in merge commits and other commits from other students as well. Great, so now I have to fix my git history once and for all. This was occurring for a few days and it affects all my current PRs up including the PR to introduce the search service to the front-end (Once the search service is merged in), and the PR to increase the jest e2e timeout seconds so our github actions doesn't lag and cause a random failure for no reason. You can find both PRs &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2012"&gt;here&lt;/a&gt; and &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2059"&gt;here&lt;/a&gt;. In any case, it was a pretty demoralizing week, and as a result, I didn't really do much in the way of reviews.&lt;/p&gt;

&lt;p&gt;One thing that the Covid-19 pandemic has done is ruin any sort of live discussions. I try and be active in slack by talking as much as possible on current work I'm doing, but it's been clear that the majority of the other students aren't as active. School and life in the home certainly play a factor, but when only a few people are talking at any given point, it really ends up begging the question, "Why am I on Slack at all?". If I just need to shut-up and do my work, what's the point of even being there? I guess it doesn't help that I'm one of the few people working on microservices, so any PR I put up is going to get very few reviews. Chris is also feeling the same way with his User service since we don't learn Firestore/Firebase in Seneca. I've tried to help alleviate that by learning as much of Firebase as I can on my free time in order to be able to provide some sort of help whenever possible, but I can certainly do more.&lt;/p&gt;

&lt;p&gt;I hate rebasing so often, because it means that any PR I have up is either not getting reviewed enough, or it's blocked by another piece of work not in the repo yet and I have to wait. I was talking about my SearchContext PR during this week's triage to make it as simple as possible for others to review and yet, I find the lack of reviews very discouraging to be blunt. I think we have a great group of developers this year working on Telescope. We've done alot of work since January, and I wanna ask in this post that everyone step up and at least try to review PRs that they don't feel comfortable reviewing. Our microservices are just as essential as the 2.0 UI updates. Even if it's easier to review front-end code since it's mostly UI based, and even if CSS is one of my weakest points in web development, I STILL make the effort to try and review UI PRs, because at the end of the day, I still learn something valuable that can help make me better with CSS. Especially now with the github cli available, making it very easy to go into another person's PR and actively test it locally, we have the potential to do much better, and I know we can.&lt;/p&gt;

&lt;p&gt;There's only 3 weeks left until 2.0 launches and I'm starting to realize that many of the things I wanted to work on will probably not happen. If it's possible for me to continue working on Telescope past DPS911, I'll take that opportunity. With this in mind, I've decided to drop work on the redis data loss feature. I left a comment discussing what a solution can be for any future developers working on this feature &lt;a href="https://github.com/Seneca-CDOT/telescope/issues/1365#issuecomment-812073822"&gt;here&lt;/a&gt;. If I can continue working on this after this month, it'd be great. I feel like this solution would be most ideal at solving this redis data corruption issue. I'll be updating the posts service's health check path to also check Redis to make sure that works once Redis is ported over to Satellite, and then, there's the JWT related stuff I wanted to look over as well. I think I messed up by taking on way too many issues and so I plan on dropping a number of them in the coming days, not because I can't do them, but because there's not much time and it'd be unrealistic for me to look at every one of these issues considering the time. &lt;/p&gt;

&lt;p&gt;With this in mind, that about raps up this post. Made on Saturday instead of Friday due to the Good Friday long weekend. We'll be back on track next week. Until then, stay tuned!&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>DPS911 Blog #10: The importance of proper code review</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Sat, 27 Mar 2021 02:41:48 +0000</pubDate>
      <link>https://dev.to/hyperthd/dps911-blog-10-the-importance-of-proper-code-review-2dj0</link>
      <guid>https://dev.to/hyperthd/dps911-blog-10-the-importance-of-proper-code-review-2dj0</guid>
      <description>&lt;p&gt;I know I'm supposed to work on the microservices, but these frontend code reviews are killing me... &amp;gt;.&amp;gt;&lt;/p&gt;

&lt;p&gt;So Version 1.9.1 of Telescope is now released. 1.9 had a hiccup so we had to make a hotfix release. As long as the work is done, that's what matters. &lt;/p&gt;

&lt;p&gt;I spent most of the week reviewing front-end code. There was alot of PRs in for 2.0 design fixes so I needed to look at those. Front-end code has always been something I enjoyed looking at and working with, and although I don't get much of a chance since many in our group prefer working on the front-end, reviewing them is always a breath of fresh air for myself. I might even pick up a smaller front-end issue in next week's meeting.&lt;/p&gt;

&lt;p&gt;Anyway, here's a general list of PRs that I reviewed this week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2031"&gt;Improve user accessibility of linking to AAA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2029"&gt;Change color for search bar in dark mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2025"&gt;Don't center table contents in figure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2017"&gt;Correct avatar link in postInfo and rename avatar prop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2006"&gt;Shrink the title font-size; add author blog link to avatar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2008"&gt;Fixes #2000 redirect URL error&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2022"&gt;Fixes issue-1929: Paginated get route&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2020"&gt;Create temporary env-setup for microservices transition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Probably my biggest list of reviewed PRs yet. As many of my issues require me to look into parts of Telescope I haven't looked at before, I used this time to look into PRs that others made so that we can get them in. Sometimes, I mess up and others have to correct me, but that's why we always have 2 reviewers required to approve in order to merge (Looking at you, 2022).&lt;/p&gt;

&lt;p&gt;In terms of work I did, I made a PR to switched the SearchResults component to use the microservice urls instead of the old telescope backend url. This was all fine and dandy until....&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rSOIBX0E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jp0329g889sxd0okl2p9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rSOIBX0E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jp0329g889sxd0okl2p9.png" alt="Messed up..."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So uhh, the SearchResults component makes a query to elastic-search. This will return the query and other parameters that the component needs in order to display it's results. I made the mistake of using the posts microservice url, which doesn't have a route that returns though queries. As a result, nothing shows up. We have another PR that adds the search microservice up, but the owner, Ray, has been slow with updating it so I was tasked with continuing his work, which is now my priority. Once that's merged in, we can add it to production, and switched the frontend to using that url instead of the posts service url. You can find the PR &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2012"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I think the main thing this week is realizing how much more work I'll need to do in order to get better with performing code reviews. Looking at &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/2026"&gt;this PR for example&lt;/a&gt;, I blocked the PR from progress because there wasn't enough adequate testing of the PR to prove that it can work in all situations. Another block from David was more because the way it was being done was not the best solution in general. A different reason for this but one that probably rings more true than my reasoning because of the evidence to back up his point. This piece in particular made me think alot,&lt;/p&gt;

&lt;p&gt;"However, this breaks how hyphenation works on the web. Hyphens are supposed to provide wrap opportunities to the browser, and removing that seems wrong.&lt;/p&gt;

&lt;p&gt;I would expand the width of this container. We have more room on the page, why limit it to such a narrow region?"&lt;/p&gt;

&lt;p&gt;Is the code working good enough? Or should we really question the way the code is written? There are good solutions and there are bad solutions. Both will work for software, but one is easier to maintain and makes more sense for developers while another solution does neither. It's not something I consider enough when reviewing front-end PRs and so it's something I need to really work on more. &lt;/p&gt;

&lt;p&gt;In any case, that about sums up this blog post. Only 2 more releases left until the 2.0 release. Big stuff are going to be coming. We got 4 weeks left to get all this stuff in on time. Let's get to work! Until next time, stay tuned!&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>DPS911 Blog #9: Services, Services, Services</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Sat, 20 Mar 2021 03:12:07 +0000</pubDate>
      <link>https://dev.to/hyperthd/dps911-blog-9-services-services-services-3odl</link>
      <guid>https://dev.to/hyperthd/dps911-blog-9-services-services-services-3odl</guid>
      <description>&lt;p&gt;Cause my blog titles are very long apparently and they're causing a bug. Well, hopefully, this is short enough for you!&lt;/p&gt;

&lt;p&gt;So after the debacle that was the Post microservice, I've finally been freed to work on some other stuff. So what was the first thing I did? I went right back to the posts microservice of course. &lt;/p&gt;

&lt;p&gt;You can find that PR &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/1953"&gt;here&lt;/a&gt;. This PR addressed moving the posts microservice over to the frontend. This required me to make the posts url an argument in the Telescope Dockerfile so that it can be passed. This is because Telescope uses different urls for the services depending on whether the frontend is being built in development, staging, or production mode. Fun Fact: My boi Royce's PR was failing to load any posts in his PR's deployment because I forgot to change the SearchResults.tsx page to use the new posts service. A funny catch from today's meeting that I found. &lt;/p&gt;

&lt;p&gt;From there, it was simply a matter of putting the posts service url inside the next.config.js file, exporting it inside the config.ts file, then using that in place of the TelescopeURL wherever it was used. An unfortunate side-effect of this was that I had to reintroduce feeds back into the posts microservice because they were needed in some of the posts related components. I'm sure they can be removed at some point, but it's a matter of when and how. &lt;/p&gt;

&lt;p&gt;I also worked on modifying our base jest.setup.js to import the development env files. You can find that PR &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/1972"&gt;here&lt;/a&gt;. This involved removing the jest.setup.js files from any microservice folder since those were only there to pull the env file and I did so in the base jest.setup.js file. I kept the one inside the posts service to import the &lt;code&gt;MOCK_REDIS&lt;/code&gt; value, but I might take that out because it gets added in the jest scripts. I'll need to work on that a little.&lt;/p&gt;

&lt;p&gt;I worked on some other PRs this week as well. Here's a list of the following PRs that I reviewed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/1954"&gt;Use proper AUTH_URL values in next.config.js and AuthProvider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/1961"&gt;Reactivated Dark Theme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/1962"&gt;Added new keywords, robots.txt, optimized meta tags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/1965"&gt;Add a status service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/pull/1990"&gt;Changed site background in light theme to #FFFFFF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also did research on possible ways to incorporate private and public keys into our jwt authentication. These would be used to sign payloads, making them more secure as opposed to using a secret from the env. This would also be something that the staging and production endpoints can take advantage of. I'm currently working on this with Yuan and Ilya, and hope to have a PR for this soon. This would also be incorporated into Satellite, making it even easier. I'll have more to report on this next week, hopefully.&lt;/p&gt;

&lt;p&gt;Next time, ver 1.9 releases. I was assigned to continue work on the search microservice that Ray started due to him being stuck up on his work. Juggling that with jwt auth related stuff will be tough, but definitely doable. Until then, stay tuned!&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>DPS911 Blog #8: The joy of writing services</title>
      <dc:creator>Abdulbasid Guled</dc:creator>
      <pubDate>Thu, 11 Mar 2021 18:15:25 +0000</pubDate>
      <link>https://dev.to/hyperthd/dps911-blog-9-the-joy-of-writing-services-2436</link>
      <guid>https://dev.to/hyperthd/dps911-blog-9-the-joy-of-writing-services-2436</guid>
      <description>&lt;p&gt;With all the failures of them not working as intended along the way. Because the only easy day was yesterday! (And yes, I took a Call of Duty reference here, lots of fun with these games back in the day, not so much now).&lt;/p&gt;

&lt;p&gt;This week's blog post is up much earlier than I normally write these. This is because I wanted to focus more on another assignment I have due on Friday. The topic of today: The Post Microservice!&lt;/p&gt;

&lt;p&gt;This one was a big one. You can find the PR for this one &lt;a href="https://github.com/Seneca-CDOT/telescope/pull/1838"&gt;here&lt;/a&gt;. This PR took so many commits that I felt like I Was doing too much. This was important though, since it allowed me to iterate on a new service as much as possible while making mistakes. I never used Docker before working on this issue. I also never wrote unit tests for databases before too. I needed to write unit tests that interact with a mock redis so show that my service works. This took time, but I was able to finally get it working and I'm so happy with the results.&lt;/p&gt;

&lt;p&gt;First off, I had to lay the foundation. This involved creating a folder, initializing the package.json, installing the dependencies I needed for my service, and creating the Dockerfile. David, thankfully, went over Docker so that alleviated alot of the worries. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d05-wS30--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ngvkdreiccdng5zgb49u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d05-wS30--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ngvkdreiccdng5zgb49u.png" alt="Posts folder layout"&gt;&lt;/a&gt;&lt;br&gt;
The last piece was to add my service to the Docker-compose.yml file as well as add redis there. This piece would've been much harder if not for the image service being there already, allowing me to use it as a reference. I thought it was amazing here, that I could specify an environment tab, and docker would use it when the service runs. This allows me to specify process.env.POSTS_PORT, knowing that I can define it in the docker-compose.yml file and it would work without any problems. I also included the port and API url in all the env files to be safe as well. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jDbDSCdL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5pu5no9hu0x6s6g0ia3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jDbDSCdL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5pu5no9hu0x6s6g0ia3.png" alt="Docker-compose layout"&gt;&lt;/a&gt;&lt;br&gt;
I thought that would be it, but that ended up not being the case. Redis required that I put the container name there, so that my service can connect to redis properly. Without it, my posts service would always return an empty array. This was the bane of my existence for the first 2 days. After some time, this was the result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BNaHrkr---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5wdfx7xfx4imhgrrs18s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BNaHrkr---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5wdfx7xfx4imhgrrs18s.png" alt="SUCCESS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SUCCESS! Now to write the unit tests. This took me about a day, since I needed to learn about supertest, the dependency needed to get this done. I also needed to figure out how to mock redis so that I can insert fake data into the mock redis database. This was way easier than I made it, because the code to do this was already implemented last year when the original backend was made. There was code in place to use a mock database based on an env value. I simply had to include a jest.setup.js file, import the env settings and set MOCK_REDIS=1 and jest would use the mock redis instead of the real one when running my unit tests!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XWX_ALKG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aaoablqgtuyoa9gsyfm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XWX_ALKG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aaoablqgtuyoa9gsyfm4.png" alt="Jest Setup Settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HiZqKtsT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9e9fn0j8la75qd3qoc85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HiZqKtsT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9e9fn0j8la75qd3qoc85.png" alt="Redis file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The last problem here was my tests were taking too long, and thus failing because the network request took too long. Funny enough, this was due to a misunderstanding of how Promises worked. The addPost function returns a promise implicitly, so I didn't need to explicitly return one via Promise.resolve (Or Promise.all in the case of an array of posts). This was adding extra time to the network request that I simply did not need. Removing that solved all my issues!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eYDLvp-K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ropc7w1f5emtxdw6ci4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eYDLvp-K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ropc7w1f5emtxdw6ci4.gif" alt="Relived!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's not perfect. Currently, the e2e unit tests are failing CI. Assuming I get those fixed, this PR should be merged this week. This service is huge, as it's needed for many other services. It also needs to interface with other services that aren't available. For instance, the User Microservice that Chris is currently working on is where we're storing the posts, and the search service, currently stalled atm, will use elasticsearch to index posts. This service will absolutely need to be updated at some point, and I'm looking forward to doing that. I learned alot about Docker while working on this service, as well as redis and supertest. I might have to start using it alot more than I currently do.&lt;/p&gt;

&lt;p&gt;Next time, a quiet week. With this big service in, I can turn my attention to other issues and PRs I wanted to work on. Until then, stay safe and see you guys next time!&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
  </channel>
</rss>
