<?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: TD</title>
    <description>The latest articles on DEV Community by TD (@tdaw).</description>
    <link>https://dev.to/tdaw</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%2F921373%2F389fa86d-f826-46dc-95fc-36edec0a7de8.png</url>
      <title>DEV Community: TD</title>
      <link>https://dev.to/tdaw</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tdaw"/>
    <language>en</language>
    <item>
      <title>Week 12: Improving Notifications</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Thu, 13 Apr 2023 14:17:36 +0000</pubDate>
      <link>https://dev.to/tdaw/week-12-improving-notifications-100j</link>
      <guid>https://dev.to/tdaw/week-12-improving-notifications-100j</guid>
      <description>&lt;p&gt;With the release of &lt;a href="https://github.com/DevelopingSpace/starchart"&gt;Starchart&lt;/a&gt; 0.9, I implemented the functionality to process SSL Certificates expiration after a fixed interval. &lt;/p&gt;

&lt;p&gt;To achieve this, we have a repeating background job to fetch certificates from the database that are no longer valid and notify the user regarding the most recent and successfully issued certificate if it is expired. &lt;/p&gt;

&lt;p&gt;With support, I also implemented an Info icon button (linking to &lt;a href="https://dnschecker.org"&gt;DNS Checker&lt;/a&gt;) in the front end for every DNS record associated with the authenticated user. Clicking on the Info icon opens a new tab and displays information relevant to the DNS record upon interacting with the  "Search" button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s9TPrD18--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ngdx8wsdk9wskp4skn3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s9TPrD18--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ngdx8wsdk9wskp4skn3.png" alt="demo" width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the remaining two weeks, I intend on perfecting Notifications-related code while making minor contributions to the front end. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>typescript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The path onward</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Tue, 04 Apr 2023 14:19:14 +0000</pubDate>
      <link>https://dev.to/tdaw/the-path-onward-1coe</link>
      <guid>https://dev.to/tdaw/the-path-onward-1coe</guid>
      <description>&lt;p&gt;With the release of &lt;a href="https://github.com/DevelopingSpace/starchart"&gt;Starchart&lt;/a&gt; 0.8, we as a team are on the path onward to perfect the core features in preparation for shipWith the release of &lt;a href="https://github.com/DevelopingSpace/starchart"&gt;Starchart&lt;/a&gt; 0.8, we as a team are on the path onward to perfect the core features in preparation for shipping the first major release. &lt;/p&gt;

&lt;h3&gt;
  
  
  Tasks at hand
&lt;/h3&gt;

&lt;p&gt;Given that the certificate flow is in place this week, I intend to implement support for notifying users via email when their certificate order is ready. Also, I would be adding a button in the UI which leads to an external resource. Lastly, as one of the Sheriffs on duty, I would ensure I do more PR reviews this week. ping the first major release. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Programming roadblocks</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Sun, 26 Mar 2023 23:08:43 +0000</pubDate>
      <link>https://dev.to/tdaw/programming-roadblocks-3ol8</link>
      <guid>https://dev.to/tdaw/programming-roadblocks-3ol8</guid>
      <description>&lt;p&gt;Roadblocks are part of the journey toward finding your footing in the programming industry. It's on us how we maneuver our way around these obstacles to get to where we want in our careers. &lt;/p&gt;

&lt;p&gt;In this blog post, I will review five major roadblocks new programmers will likely experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Not knowing where to start
&lt;/h3&gt;

&lt;p&gt;Not knowing where to start can be frustrating for all of us, especially when employing a technology stack we are unfamiliar with or uncomfortable with. To overcome this challenge, begin with what you know and gradually expand your understanding. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Focusing on the problem rather than the solution
&lt;/h3&gt;

&lt;p&gt;We often make the problem tenfold worse by focusing on the problem rather than the solution. For instance, while skiing, if we focus only on the trees rather than the path we should follow, we will only see trees.&lt;br&gt;
Invest your energy in the desired outcome rather than the problem. A Solution-Focused approach to solving problems can help you get results faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Being afraid of asking for help
&lt;/h3&gt;

&lt;p&gt;Sometimes the bravest thing we could do is ask for help. Of course, we should first try to figure out the problem independently, but if we have to meet specific deadlines and are still stuck, we should feel good about asking for help from community members. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Comparing yourself to others
&lt;/h3&gt;

&lt;p&gt;We should never compare ourselves to others, no matter what. It does more harm than good to one's self-esteem. We should always remind ourselves that everyone starts the same journey, with the same struggles we currently face, to get where they are today.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Giving up
&lt;/h3&gt;

&lt;p&gt;The thought of giving up should cease to exist in our minds because it's okay to struggle and be bad at something to get better at it. Replace such thoughts with positive affirmations to keep you going. One must Keep failing until one succeeds, without quitting. Remember, making something extraordinary requires struggle, patience, and dedication. &lt;/p&gt;




&lt;p&gt;If this post was helpful, drop a like. If I missed an important point, leave it in a comment, as it would help me and others get better at programming one day at a time. :)&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>opensource</category>
      <category>programming</category>
      <category>motivation</category>
    </item>
    <item>
      <title>Amending my professional path</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Mon, 20 Mar 2023 18:00:34 +0000</pubDate>
      <link>https://dev.to/tdaw/amending-my-professional-path-o6a</link>
      <guid>https://dev.to/tdaw/amending-my-professional-path-o6a</guid>
      <description>&lt;p&gt;In &lt;a href="https://github.com/DevelopingSpace/starchart"&gt;Starchart&lt;/a&gt; 0.6, one of the features we shipped is implementing repeatable background jobs to process expired DNS records at reconfigurable intervals on startup. Additionally, the jobs get removed automatically on completion and failure after seven days. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Process
&lt;/h3&gt;

&lt;p&gt;We start by running a query that fetches all the DNS records from the database, with the &lt;code&gt;expiresAt&lt;/code&gt; field set in the past. If the array is not empty, we iterate through each record and perform the following actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete the expired DNS records from Route53 and the database&lt;/li&gt;
&lt;li&gt;Send an email notification letting the user know about the DNS record expiration. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Experience
&lt;/h3&gt;

&lt;p&gt;This &lt;a href="https://github.com/DevelopingSpace/starchart/pull/357"&gt;PR&lt;/a&gt; took less time to get merged than the one before it, as I am getting comfortable working with the BullMQ API. However, I should take some time to review my code to eliminate any ambiguity or silly errors, which I end up realizing immediately after pushing the code to be reviewed by the project maintainers. On a happy note, Starchart has attracted a new contributor, who raised a PR that closed one of the filed issues. &lt;/p&gt;

&lt;h3&gt;
  
  
  Amending my path
&lt;/h3&gt;

&lt;p&gt;Over the last few months, it's my observation that I have improved in certain areas where I had struggled for a good chunk on my programming journey, and I could not be more happy about that I am amending my professional path. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
      <category>typescript</category>
      <category>programming</category>
    </item>
    <item>
      <title>OSD700: Working with BullMQ Worker/Queues (cont'd)</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Sun, 12 Mar 2023 21:52:30 +0000</pubDate>
      <link>https://dev.to/tdaw/osd700-working-with-bullmq-workerqueues-contd-14j9</link>
      <guid>https://dev.to/tdaw/osd700-working-with-bullmq-workerqueues-contd-14j9</guid>
      <description>&lt;p&gt;This week, I upgraded the notification system in &lt;a href="https://github.com/DevelopingSpace/starchart"&gt;Starchart&lt;/a&gt; by implementing background jobs that repeat every 5 mins to query the database for existing DNS records or Certificates expiring in less than a month. If the query returns any data, we check the last time we notified the user. If we have never notified the user, we will send an initial reminder encouraging the user to log in to the system and renew the expiring records.&lt;/p&gt;

&lt;p&gt;I am confident that initial reminders will be rolled out. Still, we would need to update the value of &lt;code&gt;lastNotified&lt;/code&gt; when we renew expiring DNS records and Certificates so that users can be reminded again. I need to update the code so we can send a second reminder when records are about to expire in less than a week. &lt;/p&gt;

&lt;p&gt;Implementing background jobs to roll our notifications in this &lt;a href="https://github.com/DevelopingSpace/starchart/pull/268"&gt;PR&lt;/a&gt; has been one of my most meaningful contributions to the project. It needs improvement, and I intend to perfect it so that any code that builds on top of it does not fail. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
      <category>typescript</category>
      <category>programming</category>
    </item>
    <item>
      <title>OSD700: Working with BullMQ Worker/Queues</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Mon, 27 Feb 2023 23:58:34 +0000</pubDate>
      <link>https://dev.to/tdaw/osd700-working-with-bullmq-workerqueues-32hd</link>
      <guid>https://dev.to/tdaw/osd700-working-with-bullmq-workerqueues-32hd</guid>
      <description>&lt;p&gt;This week I got to work with workers/queues without prior experience. I had to fill gaps in my understanding, and implement functionality simultaneously, so this week was less productive in terms of coding and more in terms of learning. &lt;br&gt;
One of the main reasons I struggled working with BullMQ API was that the concepts seemed too abstract. It took me a while to understand the relationship between Queues and Workers and how to leverage them to run background tasks to check whether we have to send email reminders to users or not. &lt;/p&gt;

&lt;p&gt;I added a background job to Starchart to repeat every 5 minutes and check whether any domains or certificates in the database expire in less than a month. We send out notifications if we find such an entry in the database. We are also keeping track of the number of times we have notified the user, as we only want to send up to two reminders. The first reminder will be sent out one month in advance, and the second reminder will only be sent out close to the expiration date. &lt;/p&gt;

&lt;p&gt;At the moment, I want to send the first reminder without any problems or side effects. If that goes well, I will work on sending another reminder close to the expiration date.&lt;/p&gt;

&lt;p&gt;I want to get comfortable working with BullMQ workers and queues, as the api can be leveraged in many projects requiring background job processing to solve real-world problems without burdening the application. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>beginners</category>
      <category>api</category>
    </item>
    <item>
      <title>OSD700: Unit Tests &amp; Code Reviews</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Tue, 21 Feb 2023 05:44:20 +0000</pubDate>
      <link>https://dev.to/tdaw/osd700-unit-tests-code-reviews-3gm6</link>
      <guid>https://dev.to/tdaw/osd700-unit-tests-code-reviews-3gm6</guid>
      <description>&lt;p&gt;This week I only got to contribute a little to Starchart, as I was still familiarizing myself with BullMQ Worker Queues. However, I finished writing unit tests for Nodemailer that essentially send an email notification via Nodemailer transport. It then verifies whether the email is received by the fake SMTP server established using MailHog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unit Tests &amp;amp; Mixed Reception
&lt;/h2&gt;

&lt;p&gt;My PR received &lt;em&gt;mixed&lt;/em&gt; reception primarily because it needed comments. A unit test should be well documented, so programmers can understand what the code is doing. Adding documentation may be time-consuming as I also have to focus on implementing the core functionality, blogging about it, doing code reviews, and ensuring I stay caught up in other courses. However, there are solutions like &lt;a href="https://github.com/dtao/autodoc"&gt;TSDoc&lt;/a&gt; which documents the code for you, so as a programmer, you can spend more time programming and less time documenting. &lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;This week, I intend on working on what I could not get done last week: sending test notifications when a domain status updates to &lt;code&gt;pending&lt;/code&gt; or &lt;code&gt;error&lt;/code&gt;. Making notifications work using BullMQ's Workers/Queues will probably be one of my most significant PR this semester, and I have to ensure I do it right, so it is well received. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>testing</category>
    </item>
    <item>
      <title>Working with Nodemailer and MailHog</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Mon, 13 Feb 2023 21:46:02 +0000</pubDate>
      <link>https://dev.to/tdaw/working-with-nodemailer-and-mailhog-5dkl</link>
      <guid>https://dev.to/tdaw/working-with-nodemailer-and-mailhog-5dkl</guid>
      <description>&lt;p&gt;This week developers at Seneca College have been working hard to add more features and functionalities to Starchart. With the release of version 0.2, I got to experiment with MailHog; tool developers used to test sending and receiving emails in a development environment using a fake SMTP server. Another cool thing is you don't need an actual recipient or sender account to use Mailhog. I like Mailhog because you do not have to install it locally. Pulling the Mailhog docker image and building the container will give the developer access to a friendly UI similar to that of Google or Outlook. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Fun Part
&lt;/h2&gt;

&lt;p&gt;The exciting part was sending test emails using the &lt;code&gt;sendNotifications&lt;/code&gt; I contributed to and having them appear in real-time in the Mailhog UI. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Tough Part
&lt;/h2&gt;

&lt;p&gt;The challenging part was writing unit tests for Nodemailer using Vitest/Jest API. Fetching messages sent to the recipient using the endpoint returns a deeply nested &lt;code&gt;object&lt;/code&gt;. I had to end up using to &lt;code&gt;expect&lt;/code&gt; functions such as &lt;code&gt;arrayContaining&lt;/code&gt; and &lt;code&gt;objectContaining&lt;/code&gt; in conjunction to ignore fields that were not relevant to the test suite.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Up Next
&lt;/h2&gt;

&lt;p&gt;This week I intend on implementing functionality for &lt;a href="https://github.com/DevelopingSpace/starchart/issues/108" rel="noopener noreferrer"&gt;sending email notifications when a domain becomes active or errors&lt;/a&gt; using BullMQ workers queues. Also, working with BullMQ may prove challenging, but I want to give it a shot, as I would gain valuable experience. Another goal is to update the Dependabot configuration to &lt;a href="https://github.com/DevelopingSpace/starchart/issues/199" rel="noopener noreferrer"&gt;avoid non-LTS node version updates&lt;/a&gt;. Also, since I am one of the Sheriffs this week, I intend to be highly available if any problems require prompt attention.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>OSD700 - Eventful week contributing to Starchart</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Sun, 05 Feb 2023 22:35:29 +0000</pubDate>
      <link>https://dev.to/tdaw/eventful-week-contributing-to-starchart-4gf1</link>
      <guid>https://dev.to/tdaw/eventful-week-contributing-to-starchart-4gf1</guid>
      <description>&lt;p&gt;Last week was all about getting started; this week, we were tasked with building on top of the Blues Stack template we set up last week. &lt;/p&gt;

&lt;p&gt;This week was quite eventful, and we broke things, but we also managed to fix things as a team. There was a lot of collaboration and active participation, which needs to be improved in some of the other courses I have previously taken. &lt;/p&gt;

&lt;p&gt;There were moments when I felt stuck or made a mistake that I thought was irreversible, but luckily the team I am working with was there to steer me in the right direction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Seneca-CDOT/starchart/pull/93" rel="noopener noreferrer"&gt;My first task&lt;/a&gt; with porting over middleware used by Satellite and adding it to Remix's server. Remix's Blues Stack, by default, uses Morgan, but we wanted to use Pino instead. However, Pino seems to cause a problem, so David has to switch to using Winston.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Seneca-CDOT/starchart/pull/125" rel="noopener noreferrer"&gt;My second task&lt;/a&gt; was to configure Nodemailer to send email notifications in the future. We have set up the function responsible for sending emails, but there's no way of knowing if it will work. We may have to make some adjustments to the current Nodemailer configuration. Next week, I aim to implement functionality to ensure we can successfully send test email notifications. &lt;/p&gt;

&lt;p&gt;Finally, &lt;a href="https://github.com/Seneca-CDOT/starchart/pull/44" rel="noopener noreferrer"&gt;setting up Dependabot&lt;/a&gt; was fun, but some of us got bothered by it, while others remained unaffected. One of the significant issues with the Dependabot setup was that it would raise PRs for major version updates. We do not want Dependabot to major version updates, as, according to David, it's risky and should be handled manually. Gladly, I resolved that issue by &lt;a href="https://github.com/Seneca-CDOT/starchart/pull/133" rel="noopener noreferrer"&gt;restricting Dependabot to minor and patch-level version&lt;/a&gt; updates.&lt;/p&gt;

&lt;p&gt;This week I want to ensure we can &lt;a href="https://github.com/Seneca-CDOT/starchart/issues/126" rel="noopener noreferrer"&gt;send the test notifications successfully&lt;/a&gt;. Also, I want to &lt;a href="https://github.com/Seneca-CDOT/starchart/issues/135" rel="noopener noreferrer"&gt;enhance Dependabot's&lt;/a&gt; current configuration. I am open to helping in other areas of development if needed. &lt;/p&gt;

</description>
      <category>tooling</category>
      <category>productivity</category>
      <category>nlp</category>
    </item>
    <item>
      <title>Small Contributions to Starchart</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Fri, 27 Jan 2023 21:41:42 +0000</pubDate>
      <link>https://dev.to/tdaw/small-contributions-to-starchart-5bj</link>
      <guid>https://dev.to/tdaw/small-contributions-to-starchart-5bj</guid>
      <description>&lt;p&gt;This week, I set up the initial Starchart project using Remix's Blues Stack template. The &lt;a href="https://github.com/Seneca-CDOT/starchart/pull/38" rel="noopener noreferrer"&gt;PR&lt;/a&gt; is the starting point for adding, modifying, and removing features and functionalities. There were some problems running the development environment, as the user had to copy the default Postgres credentials from &lt;code&gt;.env.example&lt;/code&gt; to a new &lt;code&gt;.env&lt;/code&gt; file. I most likely forgot about including it as a step in the "Steps to Test" section of my PR because the &lt;code&gt;.env&lt;/code&gt; file was created by the script I used to generate the template for the project. However, as we do not intend to use Postgres to store our data, and the purpose of the PR was to provide a starter code for the team, the PR was successfully squashed and merged. &lt;/p&gt;

&lt;p&gt;I also got the opportunity to review a &lt;a href="https://github.com/Seneca-CDOT/starchart/pull/39" rel="noopener noreferrer"&gt;PR&lt;/a&gt; in the Starchart repo that dealt with adding &lt;code&gt;package-log.json&lt;/code&gt; to the tree and removing dependencies with security issues. The &lt;code&gt;package-log.json&lt;/code&gt; was automatically added to &lt;code&gt;.gitignore&lt;/code&gt; when I ran the script to generate Blues Stack project, so I pointed out that we should add it back to the tree as it's an essential file for several reasons. One is that it has an optimization purpose of letting &lt;code&gt;npm&lt;/code&gt; skip previously installed dependencies during the installation process. Another thing worth pointing out was removing  &lt;code&gt;prom-client&lt;/code&gt; since it is a Prometheus-related dependency we are trying to avoid.&lt;/p&gt;

&lt;p&gt;Some of the errors from my end could have been avoided had I not felt the pressure of keeping other teammates waiting, as all the core features and functionalities rely on the initial Remix Blues Stack setup. &lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Planning: Using Satellite features in Starchart</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Fri, 20 Jan 2023 22:03:45 +0000</pubDate>
      <link>https://dev.to/tdaw/planning-using-satellite-features-in-remix-blues-stack-server-1k1f</link>
      <guid>https://dev.to/tdaw/planning-using-satellite-features-in-remix-blues-stack-server-1k1f</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Seneca-CDOT/starchart" rel="noopener noreferrer"&gt;Starchart&lt;/a&gt; is a new project being put together by developers at Seneca College. The project will help students manage SSL certificates and subdomains without too much hassle and free of cost. &lt;/p&gt;

&lt;p&gt;The project is currently in the planning phase, and being part of the development team, I have been researching ways to add relevant bits of &lt;a href="https://github.com/Seneca-CDOT/telescope/tree/master/src/satellite" rel="noopener noreferrer"&gt;Satellite&lt;/a&gt; in the Remix &lt;a href="https://github.com/remix-run/blues-stack" rel="noopener noreferrer"&gt;Blues Stack&lt;/a&gt; project, we intend on using for Starchart. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Plan
&lt;/h2&gt;

&lt;p&gt;After studying Satellite and Remix's Blues Stack source code, I compiled a list of features and functionalities we can port from Satellite. It's better to port features from Satellite rather than replace Remix's Blues Stack server with it, as Satellite comes pre-bundled with some dependencies that we do not require in Starchart. &lt;/p&gt;

&lt;h3&gt;
  
  
  Proposed Satellite Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Logger&lt;/li&gt;
&lt;li&gt;Middleware&lt;/li&gt;
&lt;li&gt;Hash&lt;/li&gt;
&lt;li&gt;Create Error&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Proposed Dependencies used by Satellite
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;pino, pino-http, pino-pretty (to use Logger)&lt;/li&gt;
&lt;li&gt;http-codes (to use Create Error)&lt;/li&gt;
&lt;li&gt;Terminus (for health-check and/or shutdown)&lt;/li&gt;
&lt;li&gt;helmet (for setting http headers)&lt;/li&gt;
&lt;li&gt;express-jwt (for middleware)&lt;/li&gt;
&lt;li&gt;cors&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Proposed File Structure
&lt;/h3&gt;

&lt;p&gt;After generating a Blues Stack project, we could create a directory named "Satellite" where all the files from Satellite would live. The structure will look similar to the Satellite directory within the Telescope, with only files relevant to Starchart. After installing the needed dependencies, we need to refactor the code to use Typescript and ESM (import/export) syntax to ensure it works.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkziizj4trj4iysvk9e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkziizj4trj4iysvk9e6.png" alt="sample file structure" width="574" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Server.ts Changes
&lt;/h4&gt;

&lt;p&gt;Since we are using Pino-based logger, we would import &lt;code&gt;logger&lt;/code&gt; in &lt;code&gt;server.ts&lt;/code&gt; and pass that as a middleware instead of passing &lt;code&gt;morgan&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  healthCheck
&lt;/h4&gt;

&lt;p&gt;There's already a &lt;code&gt;route&lt;/code&gt; setup for &lt;code&gt;healthCheck&lt;/code&gt; in the &lt;code&gt;app&lt;/code&gt; directory within Remix Blues Stack project, we could tweak that file to configure &lt;code&gt;terminus&lt;/code&gt; using &lt;code&gt;createTerminus&lt;/code&gt; function for &lt;code&gt;healthCheck&lt;/code&gt; functionality. &lt;/p&gt;

&lt;h4&gt;
  
  
  Middleware
&lt;/h4&gt;

&lt;p&gt;We could utilize the &lt;code&gt;isAuthorized&lt;/code&gt; and &lt;code&gt;isAuthenticated&lt;/code&gt; middleware functions to authorize and authenticate users. Also, we could benefit from the &lt;code&gt;errorHandler&lt;/code&gt; middleware. &lt;/p&gt;

&lt;h4&gt;
  
  
  Hash
&lt;/h4&gt;

&lt;p&gt;I am unsure if we need this function, as it's helpful for hashing information that is safe to pass in URLs. We cannot use it for hashing passwords, so if there's no need for hashing information in the URL, we do not need to port this function. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Once the team decides what features and functionalities we need from Satellite, we could start by filing an issue for it in the Starchart repository and go from there. &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>OSD700 - Setting up Telescope and more</title>
      <dc:creator>TD</dc:creator>
      <pubDate>Wed, 18 Jan 2023 11:56:00 +0000</pubDate>
      <link>https://dev.to/tdaw/osd700-setting-up-telescope-and-more-18bf</link>
      <guid>https://dev.to/tdaw/osd700-setting-up-telescope-and-more-18bf</guid>
      <description>&lt;p&gt;Last semester in OSD600, we were introduced to the Telescope project, maintained by developers at Seneca College. It was a daunting experience to set it up locally initially, as I ran into issues with authentication and correctly seeding the Postgres database. With support from the project's maintainers, I could run Telescope properly on my operating system and contribute to both the client side and the project's backend. &lt;/p&gt;

&lt;h3&gt;
  
  
  Steps I take to Start Telescope
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Load Docker Desktop client&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;pnpm services:start&lt;/code&gt; script&lt;/li&gt;
&lt;li&gt;Stop &lt;code&gt;parser&lt;/code&gt; using Docker Desktop client&lt;/li&gt;
&lt;li&gt;After all the containers are started, run: &lt;code&gt;cp ./src/db/env.example .env&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;pnpm db:init&lt;/code&gt; script&lt;/li&gt;
&lt;li&gt;Restart &lt;code&gt;parser&lt;/code&gt; using &lt;code&gt;pnpm services:start parser&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Memory Issues
&lt;/h3&gt;

&lt;p&gt;I have no issues running Telescope on my machine, except that specific containers consume too much memory space, which makes my system lag. I also helped one of my peers connect to the Telescope's backend locally. &lt;/p&gt;

&lt;h3&gt;
  
  
  Goals
&lt;/h3&gt;

&lt;p&gt;This semester, I look forward to familiarizing myself more with microservices and Docker, so I am comfortable using these technologies in the future.&lt;/p&gt;

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