<?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>Forem: Luis Juarez</title>
    <description>The latest articles on Forem by Luis Juarez (@iamluisj).</description>
    <link>https://forem.com/iamluisj</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%2F584578%2F854e1d44-fd88-41af-a6ba-8cdff71c0592.jpeg</url>
      <title>Forem: Luis Juarez</title>
      <link>https://forem.com/iamluisj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/iamluisj"/>
    <language>en</language>
    <item>
      <title>Save time, make money</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Tue, 03 Feb 2026 05:00:00 +0000</pubDate>
      <link>https://forem.com/iamluisj/save-time-make-money-l14</link>
      <guid>https://forem.com/iamluisj/save-time-make-money-l14</guid>
      <description>&lt;p&gt;A lot of people get into programming to build some kind of SaaS tool. I just want to provide some insight to how I made ~10k using basic html/javascript in 2 hours.&lt;br&gt;
 &lt;br&gt;
How I made ~$12k using basic html/javascript in one day.&lt;br&gt;
 &lt;br&gt;
In a previous role I supported a B2B platform. On this platform vendors would have to process invoices and submit them via CSV.&lt;br&gt;
One of my responsibilities was ensuring that these were submitted properly. The portal used to submit was actually contracted to a 3rd party (terrible decision, but this is what happens with large orgs that just keep abstracting systems).&lt;br&gt;
 &lt;br&gt;
The portal required a CSV file to be imported but provided a starter file as xls. Some vendors had no issue submitting, while others really struggled with formatting, not to mention the extremely strict rules about what each record required with over 20 use cases. Accounts payable did not make any exceptions, one mistake and the &lt;strong&gt;entire file was rejected&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This meant the &lt;strong&gt;entire invoice&lt;/strong&gt; was not paid until a corrected version was resubmitted.&lt;br&gt;
 &lt;br&gt;
As the platform grew to almost 100 vendors, I was spending (conservatively) 1 hour a day checking these files or providing some kind of support/training.&lt;br&gt;
Okay so you may be thinking, fix the UI/UX. I offered to do that, but since it was contracted to a 3rd party company we couldn’t touch it, and management didn’t  believe the business case would get a budget approved for UI/UX enhancements since it “worked”.&lt;br&gt;
 &lt;br&gt;
I created an html file, threw in a form, a table, and an export button. Then using Javascript I setup the form to add a row to the table after checking against the strict rules based on the “reason code”. If there was a problem with the row, clear error messages educated the user how to properly submit. Finally the export button handled the conversion of the html table to an array that exported to CSV.&lt;br&gt;
 &lt;br&gt;
I sent this file out to a couple vendors for beta testing, iterated on a few features, added a clear table button, an import CSV button and ability to delete lines, all using only vanilla JS and some basic CSS.&lt;br&gt;
 &lt;br&gt;
Okay you may be wondering about things like MRR or acquisition keywords, but the answer is, this one file saved me from having to do auditing or constant retraining. That’s an extra hour a day I didn’t have to spend working, so I can write up blog posts like this. Luckily I’m salary so I still get paid to do this, and 5 hours a week saved was  around ~12k/year for me at the time.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>javascript</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Niche job type - service analyst</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Wed, 28 Jan 2026 18:24:32 +0000</pubDate>
      <link>https://forem.com/iamluisj/niche-job-type-service-analyst-40l5</link>
      <guid>https://forem.com/iamluisj/niche-job-type-service-analyst-40l5</guid>
      <description>&lt;p&gt;At every career fair you see technical jobs, trade jobs, jobs in health, jobs in finance. Today I want to talk about a shift in most industries that is creating space for a new type of job.&lt;br&gt;
 &lt;br&gt;
Enter the world of Services. We live in a time where we can purchase services such as food delivery, dog walking, new smart home product installations, all from a few taps on your phone. This convenience is possible through an amazing infrastructure of the expanding Services world.&lt;br&gt;
 &lt;br&gt;
As the landscape evolves we see large companies adapting to this change and responding with teams leading initiatives around providing service convenience. Not only do we want to purchase products, we want them shipped, delivered, installed, connected to our network.&lt;br&gt;
 &lt;br&gt;
 All the while providing the best Service we have grown to expect over the years. So why services? Competitors are slashing away at each other's margins and the fight over market share rages on. Services being sold creates space for new margins, upselling, and perceived value.&lt;br&gt;
 &lt;br&gt;
This supports market share goals because not only do clients shop around for price, they are shopping around for convenience. Installation services can be optimized to create larger profit margins.&lt;br&gt;
 &lt;br&gt;
So what does this mean for those career fairs? It means that every industry is creating space for Services Fulfillment, Services Support, and Services Analysis and Design.&lt;br&gt;
 &lt;br&gt;
My work as a Services Analyst centers around optimizing and supporting the teams who are executing the services fulfillment. Finding gaps in efficiency through reporting, supporting unforeseen situations of the services world means that these jobs will not be going away with the automation industry.&lt;br&gt;
 &lt;br&gt;
While Services fulfillment may move on to self-driving cars, there will continue to be a need for Services Analysts to guide the business around the evolving needs of the client.&lt;/p&gt;

&lt;p&gt;note: This was originally written in 2020 when I was working as a business analyst for a services organization. Sharing to clear out my drafts.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automatic Git Commit and Push on Save using PHPStorm</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Fri, 28 Jul 2023 17:44:10 +0000</pubDate>
      <link>https://forem.com/iamluisj/automatic-git-commit-and-push-on-save-3pnm</link>
      <guid>https://forem.com/iamluisj/automatic-git-commit-and-push-on-save-3pnm</guid>
      <description>&lt;p&gt;To set up PhpStorm to automatically make a Git commit and push when saving files, you can use a combination of PhpStorm's file watchers and Git integration. Here's a step-by-step guide:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note: If you already have Git setup, you can skip to step 3.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Install Git:
&lt;/h2&gt;

&lt;p&gt;If you haven't already, make sure Git is installed on your system and properly configured.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enable Git integration in PhpStorm:

&lt;ul&gt;
&lt;li&gt;Open your project in PhpStorm.&lt;/li&gt;
&lt;li&gt;Go to File -&amp;gt; Settings (or PhpStorm -&amp;gt; Preferences on macOS) to open the Settings dialog.&lt;/li&gt;
&lt;li&gt;In the left pane, navigate to Version Control -&amp;gt; Git.&lt;/li&gt;
&lt;li&gt;Click the "+" button to add your Git executable path. If Git is already installed and in your system's PATH variable, PhpStorm should auto-detect it. Otherwise, you'll need to provide the path manually.&lt;/li&gt;
&lt;li&gt;Click "Test" to verify that PhpStorm can locate the Git executable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Configure File Watcher:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In the Settings dialog, go to Tools -&amp;gt; File Watchers.&lt;/li&gt;
&lt;li&gt;Click the "+" button to add a new file watcher.&lt;/li&gt;
&lt;li&gt;Choose "Custom" from the list of available file watchers.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Configure the file watcher settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: Give your file watcher a descriptive name (e.g., "Git Commit and Push").&lt;/li&gt;
&lt;li&gt;File Type: Select the specific file types or patterns you want to trigger the Git commit and push action. For example, "*.php" to target PHP files.&lt;/li&gt;
&lt;li&gt;Scope: Choose the appropriate scope for your project files. I use a project folder and have everything within that push to my repository.&lt;/li&gt;
&lt;li&gt;Program: Set the path to the Git executable (already configured in step 2).&lt;/li&gt;
&lt;li&gt;Arguments: Enter the arguments to execute the Git commands. You can use the following template:
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; commit -a -m "Auto-commit on save"
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note: I have a seperate file watcher for push so I can have commits happen with errors, but push does not.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;commit -a -m "push"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Working Directory: Set the working directory to &lt;code&gt;$ProjectFileDir$&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Output paths to refresh: Add the path to the file(s) you want to refresh after the commit and push. For example, I use &lt;code&gt;$ProjectFileDir$&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Enable the file watcher:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check the "Auto-save edited files to trigger the watcher" option.&lt;/li&gt;
&lt;li&gt;Ensure that the file watcher is enabled by checking the box next to its name.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Apply and save the changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click "Apply" and then "OK" to save the settings.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, whenever you save a file that matches the configured file type or pattern, PhpStorm will automatically trigger the file watcher, which will perform a Git commit and push using the specified Git executable and arguments. The output paths you specified will also be refreshed, ensuring the latest changes are visible in PhpStorm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here is what my File Watcher settings look like:
&lt;/h2&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%2Fq11hyi7d01aliwnyns8a.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%2Fq11hyi7d01aliwnyns8a.png" alt=" " width="800" height="664"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: Be cautious when setting up automatic commit and push actions on save, as it may lead to unintended commits. It's a good practice to review the changes before committing and pushing to ensure the quality and correctness of your code.&lt;/p&gt;

&lt;p&gt;So there you have it! Personally I use two separate file watchers, one for committing, and a separate one for pushing. They both run on save, but this enables more control over the advanced settings such as "Trigger regardless of syntax errors" - where my commit will happen, but it won't push if there are errors. I leave that as an exercise for the reader. If you have any questions, please feel free to drop a comment below! Thanks for reading!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>phpstorm</category>
      <category>git</category>
      <category>automation</category>
    </item>
    <item>
      <title>Signal vs Noise</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Mon, 06 Mar 2023 04:51:58 +0000</pubDate>
      <link>https://forem.com/iamluisj/signal-vs-noise-337a</link>
      <guid>https://forem.com/iamluisj/signal-vs-noise-337a</guid>
      <description>&lt;h2&gt;
  
  
  What is signal?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Signal&lt;/strong&gt; is a term used to describe &lt;strong&gt;important information&lt;/strong&gt;. Anything that is not signal should be considered &lt;strong&gt;noise&lt;/strong&gt;, which is the opposite of signal.&lt;/p&gt;

&lt;p&gt;I recently took a couple weeks off work, and while sifting through various emails when I returned, I started to notice a pattern of noise vs signal. Noise being emails that didn't hold any significant information. They were marked as read and discarded, while anything that was deemed signal was moved to a "to do" email folder that I would later dig into. Most of the time emails may not fall exactly in one bucket or another, but it's important practice to start noticing what is providing value and what isn't. Remove recurring emails or updates that you don't find yourself using, they create the mental overhead we are calling noise.&lt;/p&gt;

&lt;p&gt;It also makes one consider when we communicate how much of what we &lt;strong&gt;output&lt;/strong&gt; is noise vs signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The goal is to be as high signal as possible.
&lt;/h2&gt;

&lt;p&gt;When you speak, people will start to listen, because what you say is valuable. If you are constantly sending out noise, it may get lost in a sea of other noisy messages.&lt;/p&gt;

&lt;p&gt;For example, am I including the right people on the email? An update on a project might be signal to some recipients and noise for others. The key is to be conscious of what you are sending and how it will be interpreted. &lt;/p&gt;

&lt;h2&gt;
  
  
  How can I be more high signal?
&lt;/h2&gt;

&lt;p&gt;Some ways I've found to be high signal in emails is to highlight action items, and clearly define (if possible) who is responsible for the specific ask. Outlook allows you to tag individuals in your active directory, which is a very handy tool for this practice.&lt;/p&gt;

&lt;p&gt;Signal is not only reserved for written communication, we see it in all sorts of mediums. When someone is presenting in a meeting for example, are they highlighting the most important information or draining a powerpoint slide? &lt;/p&gt;

&lt;h2&gt;
  
  
  Say less
&lt;/h2&gt;

&lt;p&gt;My #1 tip for being more high signal is to &lt;strong&gt;say less&lt;/strong&gt;. Often in meetings we spend a few minutes justifying our reasoning before making our point, to hopefully bring along others to our way of thinking. Instead I tend to make my point and elaborate if there are questions.&lt;/p&gt;

&lt;p&gt;It's generally easy to identify incoming noise, but orders of magnitude more difficult to be conscious of the noise we are outputting. If you have any tips or tricks for being more high signal, please comment and share below!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>community</category>
      <category>todayilearned</category>
    </item>
    <item>
      <title>How to Secure your Site with SSL for FREE!</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Sun, 06 Nov 2022 16:08:27 +0000</pubDate>
      <link>https://forem.com/iamluisj/how-to-secure-your-site-with-ssl-for-free-13pg</link>
      <guid>https://forem.com/iamluisj/how-to-secure-your-site-with-ssl-for-free-13pg</guid>
      <description>&lt;p&gt;I'm a huge advocate for both web security and saving money on web hosting. With a bit of extra work, here is a way to secure your website using SSL without having to pay an extra fee or subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is SSL?
&lt;/h2&gt;

&lt;p&gt;SSL, or Secure Sockets Layer, is an encryption-based Internet security protocol. By enabling SSL the data between your users and your server is encrypted and the connection protocol is referred to as HTTPS. If you'd like a more in depth explanation, I think this &lt;a href="https://www.cloudflare.com/learning/ssl/what-is-ssl/" rel="noopener noreferrer"&gt;cloudflare page&lt;/a&gt; does a great job explaining. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to generate a certificate
&lt;/h2&gt;

&lt;p&gt;To generate a certificate we need a CA (Certificate Authority) to issue our website a valid certificate. &lt;/p&gt;

&lt;p&gt;If you are using an EC2 instance in AWS you should SSH into your server. If you are using a shared host like Namecheap, login to your cpanel and click “Terminal”. &lt;/p&gt;

&lt;p&gt;Now we will log in to our server and type the following into the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl https://get.acme.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install the acme protocol client that will help us generate a certificate.&lt;/p&gt;

&lt;p&gt;Next you can issue a certificate with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.acme.sh/acme.sh --issue -d example.com -d www.example.com -w /home/yourDirectory/websitefolder --server letsencrypt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Important notes
&lt;/h2&gt;

&lt;p&gt;If you aren't sure what your directory is called, you can use the pwd command to see the &lt;strong&gt;p&lt;/strong&gt;ath to your current &lt;strong&gt;w&lt;/strong&gt;orking &lt;strong&gt;d&lt;/strong&gt;irectory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pwd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also notice that we are including two domains: both example.com and &lt;a href="http://www.example.com" rel="noopener noreferrer"&gt;www.example.com&lt;/a&gt;. This is important because the certificate will only cover the domain entered, and by entering both it can secure both. We won’t get into why they are considered different here but most users expect both to be secure.&lt;/p&gt;

&lt;p&gt;The --server argument is very important because by default the protocol calls zeroSSL which has limits on how many free certificates you can have issued and requires an email. &lt;/p&gt;

&lt;h1&gt;
  
  
  Installing the certificate
&lt;/h1&gt;

&lt;p&gt;You can install the certificate with the following commands, depending on your server:&lt;/p&gt;

&lt;p&gt;Apache example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;acme.sh --install-cert -d example.com \
--cert-file      /path/to/certfile/in/apache/cert.pem  \
--key-file       /path/to/keyfile/in/apache/key.pem  \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd     "service apache2 force-reload"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nginx example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;acme.sh --install-cert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx force-reload"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only the domain is required, all the other parameters are optional.&lt;/p&gt;

&lt;h3&gt;
  
  
  Manual Install
&lt;/h3&gt;

&lt;p&gt;To install the certificate manually, you can login to cpanel and click SSL/TLS. At the bottom right you should see an option to manage SSL certificates. You can now copy and paste the certificate details to install manually.&lt;/p&gt;

&lt;p&gt;The contents of your .cer file go into the CRT box, and the .key file contents go into the KEY box, then click the install certificate button.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;I want to make sure to call out that this is made possible by some great open source work and all the contributors to the &lt;a href="https://github.com/acmesh-official/acme.sh" rel="noopener noreferrer"&gt;acmesh repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I hope you found this article helpful, if you have any questions feel free to ping me on twitter &lt;a href="https://twitter.com/HelloLuisJ" rel="noopener noreferrer"&gt;@helloluisj&lt;/a&gt; or leave a comment below. Have a great day!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>security</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Become a Force Multiplier</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Wed, 17 Aug 2022 02:41:18 +0000</pubDate>
      <link>https://forem.com/iamluisj/become-a-force-multiplier-1ojg</link>
      <guid>https://forem.com/iamluisj/become-a-force-multiplier-1ojg</guid>
      <description>&lt;p&gt;It can be counterintuitive, but to be the most productive employee possible, you may need to do &lt;u&gt;less&lt;/u&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is a Force Multiplier
&lt;/h1&gt;

&lt;p&gt;A force multiplier doesn't just accomplish more work than others, although it does look that way to leadership. It's someone who can enable the rest of their team and even other teams to work more effectively. It is about being constructive with your feedback, and constantly looking for ways to optimize your work.&lt;br&gt;
 &lt;br&gt;
For example, If you are scrambling to get 10 hours of work done in 8 hours every day, you should take a step back and think about how to streamline or automate your work into something more manageable. Depending on the process, you may need to prioritize ROI on automation, meaning don’t spend a week trying to save yourself 5 minutes, but in general you should at least give some thought to any recurring task and think "if I need to continue doing this, is there a better way to do it"&lt;br&gt;
 &lt;/p&gt;

&lt;h1&gt;
  
  
  How to become a Force Multiplier
&lt;/h1&gt;

&lt;p&gt;The easiest way to become a force multiplier is to &lt;strong&gt;share what you learn.&lt;/strong&gt; Sharing knowledge with your team proactively is a benefit because your team can become more effective when they are not coming to you individually with the same questions. It also is very useful so you don't have to be bothered when you take PTO.&lt;br&gt;
 &lt;/p&gt;

</description>
      <category>productivity</category>
      <category>leadership</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Surface Work</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Mon, 15 Aug 2022 19:39:00 +0000</pubDate>
      <link>https://forem.com/iamluisj/surface-work-1adh</link>
      <guid>https://forem.com/iamluisj/surface-work-1adh</guid>
      <description>&lt;p&gt;Between productive work and pointless "busy" work there is a space. In that space you'll find tasks that typically don't feel productive, yet they can protect you from countless hours of additional work later or ensure that you don't let important things fall by the wayside.&lt;/p&gt;

&lt;h1&gt;
  
  
  This is what I refer to as "Surface Work"
&lt;/h1&gt;

&lt;p&gt;For example, having business rhythm meetings or standups. Some teams do great &lt;strong&gt;with&lt;/strong&gt; regular meetings, and some teams run great &lt;strong&gt;without&lt;/strong&gt; regular meetings. This meeting is a basic example of surface work. By creating a platform for communication, we stay ahead of a downturn in performance because we can have dialogue around where we are and where are are going.&lt;/p&gt;

&lt;h2&gt;
  
  
  Another example
&lt;/h2&gt;

&lt;p&gt;Planning - technically isn't productive to write down the goals and explain to other teams what you are working on. You could be using this time to get more work done right? But the net benefits exist in breaking down silos and holding teams accountable to a timeline. You can write plans all day long, but they don't mean much without execution. But if you spend all day executing and no time planning and prioritizing you may end up working on a lot of the wrong things.&lt;br&gt;
 &lt;/p&gt;

&lt;h1&gt;
  
  
  Balancing Surface Work
&lt;/h1&gt;

&lt;p&gt;Surface work can very easily become "busy work" if it's not used effectively. For example, in a weekly meeting, the goal is &lt;strong&gt;not&lt;/strong&gt; to mandate an hour of everyone's time. The goal is to ensure that all parties are aware of &lt;strong&gt;how&lt;/strong&gt; and &lt;strong&gt;why&lt;/strong&gt; the business is operating the way it is.&lt;/p&gt;

&lt;h1&gt;
  
  
  Using Surface Work Effectively
&lt;/h1&gt;

&lt;p&gt;Productivity is a fraction, where the numerator is the list of tasks you complete, and the denominator is the list of tasks you give yourself. You can increase productivity by either increasing what you get done, or removing tasks. It's easy to start pruning tasks that feel like they aren't productive and assuming you will get more done, but I would implore you to ask yourself, is this surface work? Will that weekly meeting actually save you time down the line? If the answer is no or you aren't sure, then drop it and see if you are more productive.&lt;/p&gt;

&lt;p&gt;On the other hand, think about something you may be able to add into your rhythm to protect you from dealing with large problems later. For example, let's say once a week you spend 30 minutes talking to your employees about development. This can save you months of searching for a new employee because your last hire didn't feel like there were development opportunities.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>management</category>
      <category>leadership</category>
    </item>
    <item>
      <title>PlanetScale - Creating a table and adding information using PHP</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Sat, 26 Mar 2022 03:03:50 +0000</pubDate>
      <link>https://forem.com/iamluisj/planetscale-creating-a-table-and-adding-information-using-php-1ehc</link>
      <guid>https://forem.com/iamluisj/planetscale-creating-a-table-and-adding-information-using-php-1ehc</guid>
      <description>&lt;h3&gt;
  
  
  I previously made a post about connecting to a PlanetScale database, you can find it &lt;a href="https://dev.to/iamluisj/connecting-to-planetscale-with-a-pdo-object-in-php-2h09"&gt;here&lt;/a&gt;.
&lt;/h3&gt;

&lt;h1&gt;
  
  
  Creating a table
&lt;/h1&gt;

&lt;p&gt;You can create a table with PlanetScale's UI or programmatically. I'll be using PHP, but you can use any language you prefer, once you've connected to your instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  PlanetScale UI
&lt;/h2&gt;

&lt;p&gt;There is a &lt;a href="https://docs.planetscale.com/concepts/web-console" rel="noopener noreferrer"&gt;web console&lt;/a&gt; you can access from your PlanetScale branch that allows you to run SQL code directly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `email` varchar(255) NOT NULL,
  `first_name` varchar(255),
  `last_name` varchar(255)
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Programmatically creating a table
&lt;/h2&gt;

&lt;p&gt;I use PHP's PDO class, so assuming you have a PDO object $db created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function createTable() {
    global $db;
    $query = 'CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `email` varchar(255) NOT NULL,
  `first_name` varchar(255),
  `last_name` varchar(255)
)';
    $statement = $db-&amp;gt;prepare($query);
    $statement-&amp;gt;execute();
    $statement-&amp;gt;closeCursor();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*Note: This will not work if your branch is running in "production" mode. The point of PlaneScale is that you can make schema updates without breaking your database, so they don't let you make modifications directly to that branch. If you already have your main branch in production mode, create a new branch. I called my second branch 'dev' and setup a PDO to the second branch so I can modify the schema there if needed. Then once you are ready you can "deploy request" your branch to the main.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inserting data into PlanetScale Database
&lt;/h2&gt;

&lt;p&gt;You can now execute SQL statements as you normally would.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function addRow($userEmail, $fname, $lname) {
    global $db;
    //add user to group
    $query2 = "INSERT INTO users (email, first_name, last_name) VALUES (:userEmail,:first_name, :last_name)";
    $statement = $db-&amp;gt;prepare($query2);
    $statement-&amp;gt;bindValue(":userEmail", $userEmail);
    $statement-&amp;gt;bindValue(":first_name", $fname);
    $statement-&amp;gt;bindValue(":last_name", $lname);
    $statement-&amp;gt;execute();
    $statement-&amp;gt;closeCursor();
}

addRow("myTestEmail1231@gmail.com", "TestUser1", "TestLastName");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are using PHPStorm, I would highly recommend connecting your PlanetScale database to your IDE through DataGrip. &lt;a href="https://planetscale.com/blog/using-planetscale-with-jetbrains-datagrip-mysql-gui" rel="noopener noreferrer"&gt;Here is an article on how to do that&lt;/a&gt;. This will give you things like autocomplete and make it easier to catch bugs/typos in your SQL statements.&lt;/p&gt;

&lt;h3&gt;
  
  
  If you found this helpful or have questions, drop a comment below or ping me on Twitter &lt;a href="https://twitter.com/HelloLuisJ" rel="noopener noreferrer"&gt;@helloLuisJ&lt;/a&gt;!
&lt;/h3&gt;

</description>
      <category>planetscale</category>
      <category>php</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Connecting to PlanetScale with a PDO Object in PHP</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Sat, 26 Mar 2022 01:16:17 +0000</pubDate>
      <link>https://forem.com/iamluisj/connecting-to-planetscale-with-a-pdo-object-in-php-2h09</link>
      <guid>https://forem.com/iamluisj/connecting-to-planetscale-with-a-pdo-object-in-php-2h09</guid>
      <description>&lt;h1&gt;
  
  
  What is PlanetScale?
&lt;/h1&gt;

&lt;p&gt;PlanetScale is a MySQL compatible serverless database platform. I think of it as GitHub for databases. You can use it to host your database, create branches, and preview the impact that merging your changes will do to your database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Okay so how do I connect to it using PHP?
&lt;/h2&gt;

&lt;p&gt;The recommended way to connect to a Planetscale database is to use the mysqli() class.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$mysqli = mysqli_init();
$mysqli-&amp;gt;ssl_set(NULL, NULL, "/etc/ssl/cert.pem", NULL, NULL);
$mysqli-&amp;gt;real_connect($_ENV["HOST"], $_ENV["USERNAME"], $_ENV["PASSWORD"], $_ENV["DATABASE"]);
$mysqli-&amp;gt;close();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The title says WITH PDO!
&lt;/h2&gt;

&lt;p&gt;I tend to prefer using PDO objects as a personal preference. &lt;br&gt;
Using PDO with SSL requires us to also setup additional 'options' when instantiating the handle.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$dsn = 'mysql:host=$host;dbname=$database;port=3306';
$user = "";
$dbP = "";
$options = array(
    PDO::MYSQL_ATTR_SSL_CA =&amp;gt; '/etc/ssl/certs/ca-certificates.crt'
);
try {
    $db = new PDO($dsn, $user, $dbP, $options);
    $db-&amp;gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
} catch (PDOException $error) {
    $msg = $error-&amp;gt;getMessage();
    echo $msg;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Let's break down the options we used to turn SSL on
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    PDO::MYSQL_ATTR_SSL_CA =&amp;gt; 'path_to_cert.pem',
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  This sets the file path to the SSL certificate authority
&lt;/h3&gt;

&lt;p&gt;In some cases the MYSQL_ATTR_SSL_CA may need to be set to "/etc/ssl/cert.pem" depending on the OS your server is running. Your best bet if you aren't sure would be to use this function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;openssl_get_cert_locations()['default_cert_file']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively you can run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var_dump(openssl_get_cert_locations());
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To see the string of your default_cert_file.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you run into an error like "openssl s_client no cipher match" like I did, you can try setting the following option:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT =&amp;gt; false,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Warning
&lt;/h3&gt;

&lt;p&gt;Setting this option to false is NOT recommended, Setting this to false means that any connection is insecure and susceptible to a Man-in-the-middle-attack because the certificate is not verified. If your connection works without setting this option I recommend omitting this attribute since it defaults to true.&lt;/p&gt;

&lt;h2&gt;
  
  
  Settings the options variable
&lt;/h2&gt;

&lt;p&gt;To be more concise I prefer to use the int values for the options array. So my options look like this. It is equivalent to what you see above.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$options = array(
    1009 =&amp;gt; "/etc/ssl/cert.pem",
    1014 =&amp;gt; false,
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Final code snippet
&lt;/h1&gt;

&lt;p&gt;Here is what I use to connect my PHP app to PlanetScale.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$dsn = 'mysql:host=$hostURL;dbname=$databaseName;port=3306';
$user = "";
$dbP = "";
$options = array(
    1009 =&amp;gt; "/etc/ssl/cert.pem",
    1014 =&amp;gt; false,
);
try {
    $db = new PDO($dsn, $user, $dbP, $options);
    $db-&amp;gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";
} catch (PDOException $error) {
    $msg = $error-&amp;gt;getMessage();
    echo "error:".$msg;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope you found this helpful! If you did, or you have a question, drop a comment below or ping me on twitter @helloLuisJ&lt;/p&gt;

</description>
      <category>php</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>planetscale</category>
    </item>
    <item>
      <title>How to fix Warning: 10 Prisma Clients are already running</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Tue, 08 Mar 2022 03:17:03 +0000</pubDate>
      <link>https://forem.com/iamluisj/how-to-fix-warning-10-prisma-clients-are-already-running-j14</link>
      <guid>https://forem.com/iamluisj/how-to-fix-warning-10-prisma-clients-are-already-running-j14</guid>
      <description>&lt;p&gt;The first time I ran into this error, I thought I was doing something wrong. But as I dug into it a bit more, I realized this is a side-effect of javascript frameworks that rebuild the project anytime code changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;warn(prisma-client) There are already 10 instances of Prisma Client actively running.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The problem is that every time the code changes, a new connection is made to the database because &lt;code&gt;new PrismaClient()&lt;/code&gt; is called. &lt;/p&gt;

&lt;p&gt;To avoid a new connection being created during development every time a change is made, you can do a quick check to see if there is already a connection made, and if so, use that. If not, then call new PrismaClient().&lt;/p&gt;

&lt;h2&gt;
  
  
  Here is what that would look like:
&lt;/h2&gt;

&lt;p&gt;File: ./util/db.server.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { PrismaClient } from '@prisma/client'

let db;

//check if we are running in production mode
if (process.env.NODE_ENV === 'production') {
  db = new PrismaClient()
} else {
//check if there is already a connection to the database
  if (!global.db) {
    global.db = new PrismaClient()
  }
  db = global.db
}

export { db };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we are able to use the exported prisma object in our other components with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { db } from './util/db.server.js'

const data = db.user.findMany();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  And there you have it! Now your app will check if a connection to the database exists before creating a new one and you won't get that error message.
&lt;/h3&gt;

&lt;p&gt;One last thing I should mention is that technically creating a new PrismaClient() isn't the issue, but the fact that Prisma objects call their own connect() method when they are first used (under the hood). This is called lazy connect. You can learn more about that &lt;a href="https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/connection-management" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>prisma</category>
      <category>tutorial</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Connecting to a PostgreSQL database in PHP</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Sun, 13 Feb 2022 19:46:18 +0000</pubDate>
      <link>https://forem.com/iamluisj/connecting-to-a-postgresql-database-in-php-524h</link>
      <guid>https://forem.com/iamluisj/connecting-to-a-postgresql-database-in-php-524h</guid>
      <description>&lt;p&gt;Connecting to a database is made much easier in PHP using the built in PDO class. PDO is a &lt;a href="https://en.wikipedia.org/wiki/Database_abstraction_layer" rel="noopener noreferrer"&gt;database abstraction layer&lt;/a&gt;. This allows us to connect to a database, then pass that connection to an object that we can later call. &lt;/p&gt;

&lt;p&gt;To create a PDO object, you must pass in a Data source name, which is really just a string that sets the options for the connection.&lt;br&gt;
Starting with the driver to use, then the host address, the database name, and if you want, a port number.&lt;/p&gt;

&lt;p&gt;Important things to keep in mind: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;set the driver in the DSN to &lt;strong&gt;pgsql&lt;/strong&gt; for PostgreSQL.&lt;/li&gt;
&lt;li&gt;your host will be relative to the server it is running on, so &lt;strong&gt;localhost&lt;/strong&gt; or &lt;strong&gt;127.0.0.1&lt;/strong&gt; means the database is running on the same server the PHP file is being executed on&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PHP Code to connect to a PostgreSQL database.
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php
$databaseName = "";
$username = "";
$password = "";
$dsn = 'pgsql:host=127.0.0.1;dbname=$databaseName';

try {
    //connect to the db
    $db = new PDO($dsn, $username, $password);

} catch (PDOException $e) {
    $error_message = $e-&amp;gt;getMessage();
    echo $error_message;
    exit();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>php</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>postgres</category>
    </item>
    <item>
      <title>THE BEST NEW JavaScript Framework 2022</title>
      <dc:creator>Luis Juarez</dc:creator>
      <pubDate>Sun, 06 Feb 2022 17:48:59 +0000</pubDate>
      <link>https://forem.com/iamluisj/the-best-new-javascript-framework-2022-2250</link>
      <guid>https://forem.com/iamluisj/the-best-new-javascript-framework-2022-2250</guid>
      <description>&lt;p&gt;I see a lot of developers looking for guidance around what new framework to learn, or what is the best programming language to learn. I think the best advice I can give to people is a brief explanation of what frameworks are and why they exist, rather than calling out whatever the hot new framework is.&lt;br&gt;
 &lt;br&gt;
My second best piece of advice is to lookup a few companies they may want to work for and see what kind of developers they are looking for. Most postings have their stack included. Just learn whatever is listed in their requirements.&lt;br&gt;
 &lt;br&gt;
Before diving into frameworks, I will take a step back to answer the question about what programming language is best to learn.&lt;br&gt;
 &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/iamluisj" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F584578%2F854e1d44-fd88-41af-a6ba-8cdff71c0592.jpeg" alt="iamluisj"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/iamluisj/the-best-programming-language-to-learn-in-2022-115o" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;The BEST programming language to learn in 2022&lt;/h2&gt;
      &lt;h3&gt;Luis Juarez ・ Feb 6 '22&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programing&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#best&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#language&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt; &lt;br&gt;
Okay now applying what we know about programming languages, you may be wondering why there are so many frameworks. Let's begin with an example. Say you are creating a new website, and you are starting from scratch. You create your homepage and start adding in additional pages, having to type in links for each new page.&lt;br&gt;
 &lt;br&gt;
You realize that you could write a JavaScript function that could find any files under a specific folder called "pages" put the name of those files into an array, then loop through the array and spit out a link. It would look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Function createNavigation() {
     Let navArray = Array()
     let pages = getFiles("../pages")
     For page in pages {
          navArray.push(&amp;lt;a href="./page"&amp;gt;page&amp;lt;/a&amp;gt;)
     }
 Return navArray
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;br&gt;
You would be very happy with yourself because now you have saved yourself some time creating these links manually. You think to yourself, what else could I do to help save myself time? Before too long, you are adding more functions and it becomes a package, eventually you add more and more until this becomes its own framework. A lot of these frameworks end up getting open sourced and other contributors start to add in their own ways to help "improve" it.&lt;br&gt;
 &lt;br&gt;
As an example this is how you go from JavaScript to React. React is just a framework with a lot of features that help make writing traditional JavaScript easier. Anything you can do with React, you could do with JavaScript, with a lot more code. What makes this really shine though is Nodejs, which is a backend framework where the server can dynamically update the JavaScript that is being sent from the server to the client.&lt;br&gt;
 &lt;br&gt;
All in all I hope this quick synopsis helps illuminate why it can be so difficult to really compare frameworks and programming languages. It boils down to personal preference, or maybe company preference in a professional setting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Answer
&lt;/h2&gt;

&lt;p&gt;I'll leave you with my &lt;strong&gt;opinion&lt;/strong&gt; on the best JavaScript Framework in 2022. &lt;/p&gt;

&lt;h3&gt;
  
  
  React
&lt;/h3&gt;

&lt;p&gt;It really doesn't make sense for most front end teams to not use React.&lt;br&gt;
If you are familiar with React and are interested in React specific frameworks, I am a big fan of &lt;a href="//remix.run"&gt;Remix&lt;/a&gt;, while it abstracts some things to make them easier, it really stays close to web fundamentals instead of obscure framework specific features. Top runner up is NextJS, which has a lot more support. &lt;/p&gt;

&lt;h2&gt;
  
  
  Remember there is no wrong answer! Start building!
&lt;/h2&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>frameworks</category>
    </item>
  </channel>
</rss>
