<?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: Kelvin Graddick</title>
    <description>The latest articles on DEV Community by Kelvin Graddick (@kgcodes).</description>
    <link>https://dev.to/kgcodes</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%2F302880%2F937c5fff-e1f2-47ba-bf9a-ed82821dc62a.png</url>
      <title>DEV Community: Kelvin Graddick</title>
      <link>https://dev.to/kgcodes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kgcodes"/>
    <language>en</language>
    <item>
      <title>How to FIND the QUESTIONS that will be in an interview</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Sat, 27 May 2023 04:08:42 +0000</pubDate>
      <link>https://dev.to/kgcodes/how-to-find-the-questions-that-will-be-in-an-interview-1g1n</link>
      <guid>https://dev.to/kgcodes/how-to-find-the-questions-that-will-be-in-an-interview-1g1n</guid>
      <description>&lt;p&gt;Trying to figure out &lt;strong&gt;what exact areas to study/practice&lt;/strong&gt; to prep for an upcoming tech interview can be stressful! In order to maximize your chances of success and ensure a strong performance during the interview, it's crucial to &lt;strong&gt;narrow down your focus&lt;/strong&gt; and prepare effectively.&lt;/p&gt;

&lt;p&gt;By following the tips below, you can not only optimize your studying but also gain valuable insights and even potentially discover the exact questions that may be asked.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="//www.Glassdoor.com"&gt;Glassdoor.com&lt;/a&gt; (and Glassdoor app)
&lt;/h2&gt;

&lt;p&gt;One valuable resource to consider is Glassdoor, a popular website and app that provides company reviews, salary information, and interview experiences. To leverage Glassdoor for interview preparation, follow these steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Search the company on Glassdoor:&lt;/strong&gt; Begin by searching for the specific company you're interviewing with on Glassdoor.&lt;br&gt;
&lt;strong&gt;2. Go to the Interviews tab:&lt;/strong&gt; Once you've landed on the company's profile, navigate to the Interviews tab. This section is particularly valuable as it contains real-life interview experiences shared by candidates.&lt;br&gt;
&lt;strong&gt;3. Search for the job title:&lt;/strong&gt; Use the search functionality within the Interviews tab to look for interview experiences specifically related to the job title or role you're applying for.&lt;br&gt;
&lt;strong&gt;4. View the submissions to find real interview questions/topics:&lt;/strong&gt; Take the time to explore the submissions and delve into the interview questions and topics shared by previous candidates. This can provide you with valuable insights into what to expect during your own interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="//www.teamblind.com"&gt;TeamBlind.com&lt;/a&gt; (and Blind app)
&lt;/h2&gt;

&lt;p&gt;Another platform to consider is Blind, a website and app that allows professionals to anonymously discuss their workplaces and share insights. Here's how you can use Blind for interview preparation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Utilize the main search:&lt;/strong&gt; Access the main search feature on Blind and enter the name of the company you're interviewing with, followed by the role or job title, and add "interview questions" to your search query.&lt;br&gt;
&lt;strong&gt;2. View the submissions:&lt;/strong&gt; Browse through the search results and explore the submissions related to interview questions or topics. Blind offers a forum-like environment where individuals can ask questions and share their experiences, making it a valuable resource for gathering interview insights.&lt;br&gt;
&lt;strong&gt;3. Try different searches:&lt;/strong&gt; Experiment with different search queries to gather a wider range of real interview questions and topics. This will help you gain a comprehensive understanding of what you may encounter during your interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="//www.leetcode.com"&gt;Leetcode.com&lt;/a&gt; (premium)
&lt;/h2&gt;

&lt;p&gt;In addition to online platforms, consider leveraging LeetCode Premium, a website that offers a paid subscription service for interview preparation. Follow these steps to make the most of LeetCode Premium:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Visit the company tag:&lt;/strong&gt; Use LeetCode's company tag feature to find specific questions and problems related to the company you're interviewing with.&lt;br&gt;
&lt;strong&gt;2. Order problems by frequency:&lt;/strong&gt; Once you're on the company tag page, prioritize the problems by their frequency. This will highlight the most commonly asked questions and provide you with a targeted focus for your preparation.&lt;br&gt;
&lt;strong&gt;3. Explore the "Discuss" tab:&lt;/strong&gt; Leverage the "Discuss" tab associated with each problem to access discussions and explanations provided by other users. This can help you gain insights into different approaches, optimizations, and potential solutions for each problem.&lt;br&gt;
&lt;strong&gt;4. Use problem and discuss tabs for practice:&lt;/strong&gt; Take advantage of the problem and discuss tabs to practice solving interview-style questions. By engaging with the community and participating in discussions, you can refine your problem-solving skills and deepen your understanding of various concepts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask the recruiter
&lt;/h2&gt;

&lt;p&gt;While online platforms are valuable resources, &lt;strong&gt;don't forget to reach out to the recruiter&lt;/strong&gt; assigned to your interview. The recruiter's role is to support and guide you throughout the process. They can provide you with valuable information about the &lt;strong&gt;interview structure, nature, and potential topics&lt;/strong&gt; that may be covered.&lt;/p&gt;

&lt;p&gt;Additionally, recruiters may have &lt;strong&gt;specific resources or materials&lt;/strong&gt; for you to utilize during your preparation.&lt;/p&gt;

&lt;p&gt;Keep in mind that these tips are particularly useful for interviews with &lt;strong&gt;large tech companies&lt;/strong&gt;, but they can be applied to any interview scenario. Even if you only gain insights on a single crucial question, it can make a significant difference in your overall performance.&lt;/p&gt;

&lt;p&gt;Good luck with your interview preparation! Hope this helps!&lt;/p&gt;

</description>
      <category>interview</category>
      <category>careerdevelopment</category>
      <category>beginners</category>
    </item>
    <item>
      <title>What is the GitFlow code branching strategy?</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Mon, 06 Feb 2023 04:28:58 +0000</pubDate>
      <link>https://dev.to/kgcodes/what-is-the-gitflow-code-branching-strategy-4hpf</link>
      <guid>https://dev.to/kgcodes/what-is-the-gitflow-code-branching-strategy-4hpf</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is &lt;a href="https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow" rel="noopener noreferrer"&gt;GitFlow&lt;/a&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve been using the GitFlow &lt;strong&gt;code branching strategy&lt;/strong&gt; professionally for a number of years now, and the amount of times it’s ’saved’ my team and I, I can’t count it.&lt;/p&gt;

&lt;p&gt;Let’s dig into it..&lt;/p&gt;

&lt;h2&gt;
  
  
  First, what is source control / Git?
&lt;/h2&gt;

&lt;p&gt;To explain what it is, well first, you have to know what is &lt;strong&gt;source control / Git&lt;/strong&gt;(?)&lt;/p&gt;

&lt;p&gt;'&lt;a href="https://aws.amazon.com/devops/source-control/" rel="noopener noreferrer"&gt;Source control&lt;/a&gt;' software helps to store and manage every modification to code.&lt;/p&gt;

&lt;p&gt;It provides a &lt;strong&gt;history of changes&lt;/strong&gt; and the ability go back to a specific version in history.&lt;/p&gt;

&lt;p&gt;Source control also provides the ability for individuals to create separate derivatives, or &lt;strong&gt;branches of the code&lt;/strong&gt;, which can later be merged back into the main code.&lt;/p&gt;

&lt;p&gt;'&lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git&lt;/a&gt;' is the most widely used modern version control system in the world today.&lt;/p&gt;

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

&lt;p&gt;'&lt;a href="https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow" rel="noopener noreferrer"&gt;GitFlow&lt;/a&gt;' is a just an abstract strategy for what primary and short-term &lt;strong&gt;code branches&lt;/strong&gt; to have during development. It was created by Vincent Driessen.&lt;/p&gt;

&lt;p&gt;It helps individuals and teams manage, integrate, and release their code effectively by providing &lt;strong&gt;a framework for how and when to branch code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is better suited for teams with planned deployment 'cycles'/releases, and less suited if they do true continuous deployment (CD) with auto-releases.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here are the various &lt;strong&gt;code branches&lt;/strong&gt; in GitFlow:&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Main branch + Develop branch
&lt;/h2&gt;

&lt;p&gt;To start Gitflow requires two primary branches; '&lt;strong&gt;main&lt;/strong&gt;' and '&lt;strong&gt;develop&lt;/strong&gt;'.&lt;/p&gt;

&lt;p&gt;The 'main' branch stores the &lt;strong&gt;official release history&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The 'develop' branch is used as an &lt;strong&gt;integration branch&lt;/strong&gt; for all feature branches (next section).&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%2Fp86w289lehinatncvldh.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%2Fp86w289lehinatncvldh.png" alt="GitFlow Main branch + Develop branch" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature branches
&lt;/h2&gt;

&lt;p&gt;Each new feature or fix should be started in its own '&lt;strong&gt;feature&lt;/strong&gt; branch'. The develop branch should be used as the &lt;strong&gt;base branch&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When the feature is completed (and preferably tested) it should be &lt;strong&gt;merged&lt;/strong&gt; back into the develop branch.&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%2Fwfrcyip7gt8mhw8uls8c.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%2Fwfrcyip7gt8mhw8uls8c.png" alt="GitFlow Feature branches" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Release branches
&lt;/h2&gt;

&lt;p&gt;Once it's time for deployment, a '&lt;strong&gt;release&lt;/strong&gt;' branch is created from the 'develop' branch. After this point the release branch should only have regression issues fixed on it if needed; &lt;strong&gt;no new features&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After deployment, the release branch is &lt;strong&gt;merged down&lt;/strong&gt; into the main and the develop branches.&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%2Fkit0bx5weoe2w8odu0ft.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%2Fkit0bx5weoe2w8odu0ft.png" alt="GitFlow Release branches" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hotfix branches
&lt;/h2&gt;

&lt;p&gt;If a hotfix/patch for any production release is needed, then a '&lt;strong&gt;hotfix&lt;/strong&gt;' branch is created from a release point on the 'main' branch.&lt;/p&gt;

&lt;p&gt;After deployment, the hotfix branch is &lt;strong&gt;merged down&lt;/strong&gt; into the main and the develop branches.&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%2Fj12cz627k7yyeds1payh.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%2Fj12cz627k7yyeds1payh.png" alt="GitFlow Hotfix branches" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use GitFlow?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A release-based team/company where there are &lt;strong&gt;routine deployments&lt;/strong&gt; planned over development cycles.&lt;/li&gt;
&lt;li&gt;Where &lt;strong&gt;multiple releases&lt;/strong&gt; may need to be worked on in parallel (i.e. next version and unplanned hotfix version)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When NOT to use GitFlow?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In truly &lt;strong&gt;continuous delivery/deployment&lt;/strong&gt; scenarios where very short-lived feature branches and a single primary branch are needed&lt;/li&gt;
&lt;li&gt;Where the team merges &amp;amp; deploys the shared branch &lt;strong&gt;frequently&lt;/strong&gt; with automated testing, versus longer deployment/testing cycles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Have you done GitFlow before? If not, what branching workflow/strategy do you use?&lt;/p&gt;

</description>
      <category>career</category>
      <category>cybersecurity</category>
      <category>ai</category>
    </item>
    <item>
      <title>6 tips for refactoring code</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Sun, 03 Jul 2022 03:11:54 +0000</pubDate>
      <link>https://dev.to/kgcodes/6-tips-for-refactoring-code-13nn</link>
      <guid>https://dev.to/kgcodes/6-tips-for-refactoring-code-13nn</guid>
      <description>&lt;h3&gt;
  
  
  ⁣⁣What is code refactoring?
&lt;/h3&gt;

&lt;p&gt;Refactoring is the process of &lt;strong&gt;restructuring existing code&lt;/strong&gt; (changing the factoring) without changing its external behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Here are 6 tips for refactoring code:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip 1: Remove duplication
&lt;/h3&gt;

&lt;p&gt;Follow the D.R.Y. principle and &lt;strong&gt;Don’t Repeat Yourself&lt;/strong&gt;.&lt;br&gt;
— If you see code, functions, and/or logic being repeated, rewrite the code to remove the duplication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip 2: Improve responsibility
&lt;/h3&gt;

&lt;p&gt;Follow the &lt;strong&gt;Single Responsibility Principle&lt;/strong&gt;. Variables/classes/functions should have a single responsibility and thus only a single reason to change. Ensure a separation of concerns by having separating things into sections that handle a certain ‘concern’.&lt;br&gt;
— avoid coupling of different logical entities&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip 3: Remove unneeded code and over-complexity
&lt;/h3&gt;

&lt;p&gt;— Remove anything that is unneeded to simplify the code and reduce confusion or “why is this here?”&lt;br&gt;
— &lt;strong&gt;Y.A.G.N.I “You aren’t gonna need it”&lt;/strong&gt;: avoid trying to cover every possible extra case and future scenario if the likelihood is low or very unknown&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip 4: Be consistent and follow standards
&lt;/h3&gt;

&lt;p&gt;Sometimes it’s better to &lt;strong&gt;stay consistent&lt;/strong&gt; with the current project, even if there might be a better way.&lt;br&gt;
— Follow standards where you can to make your code more predictable to others&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip 5: Adopt a design pattern when needed
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;design pattern&lt;/strong&gt; is a general, reusable solution to a commonly occurring problem in software design.&lt;br&gt;
— Always keep things simple first; only adopt a design pattern when the code begins to show it&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip 6: Pull-up Push-down
&lt;/h3&gt;

&lt;p&gt;Determine if methods, objects, and/or logic need to &lt;strong&gt;be consolidated&lt;/strong&gt; at a ‘higher’ level, or need to be &lt;strong&gt;pushed down&lt;/strong&gt; to a ‘lower’ one&lt;br&gt;
— in the case that logic is duplicated in two places, pull up toe a higher level&lt;br&gt;
— in the case that logic is shared between multiple places, but only utilized in one; push down to the one that uses it&lt;/p&gt;

&lt;p&gt;⁉️ What tips so you have for refactoring code?&lt;/p&gt;

</description>
      <category>refactorit</category>
      <category>programming</category>
      <category>codequality</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Automating the flow of blog posts to my email list with PHP ⚙️</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Fri, 24 Dec 2021 20:18:26 +0000</pubDate>
      <link>https://dev.to/kgcodes/automating-the-flow-of-blog-posts-to-my-email-list-with-php-3k2p</link>
      <guid>https://dev.to/kgcodes/automating-the-flow-of-blog-posts-to-my-email-list-with-php-3k2p</guid>
      <description>&lt;p&gt;A while back ⁣I decided that I wanted to &lt;strong&gt;automate the flow of blog posts to my email list&lt;/strong&gt; (which is basically nobody right now by the way 😅).&lt;/p&gt;

&lt;p&gt;I found that &lt;a href="//www.mailchimp.com"&gt;Mailchimp&lt;/a&gt; has a feature for &lt;strong&gt;automatically sending to an email list based on RSS feed&lt;/strong&gt; updates on a website.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://en.wikipedia.org/wiki/RSS"&gt;RSS (Rich Site Summary or Really Simple Syndication)&lt;/a&gt; is a web feed format that allows users and applications to access updates to websites in a standardized way.&lt;/p&gt;

&lt;p&gt;RSS feeds are usually generated for you in website builders and other tools but since my site was built from scratch I needed to make my own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is what I needed to do:&lt;/strong&gt;&lt;br&gt;
— find the RSS feed XML format online&lt;br&gt;
— create a new PHP page on my website in the RSS format&lt;br&gt;
— dynamically populate the RSS feed items with my blog posts from the database&lt;br&gt;
— test the RSS feed page on a validator website&lt;br&gt;
— setup a RSS feed email campaign using the feed on Mailchimp&lt;br&gt;
— design/style the email template&lt;br&gt;
— send a test email to myself to verify&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---sE6pol5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xm04x6ey021ox3h8yfwz.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---sE6pol5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xm04x6ey021ox3h8yfwz.jpeg" alt="Automating the flow of blog posts to my email list with PHP" width="880" height="1100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VC9fmK-U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amejh72jn1204ivlmwse.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VC9fmK-U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amejh72jn1204ivlmwse.jpeg" alt="PHP script that generates a RSS feed based on my website's blog posts" width="880" height="1100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vHZfgh66--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l50bzqkq9eoik1cizuqe.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vHZfgh66--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l50bzqkq9eoik1cizuqe.jpeg" alt="Here is the generated RSS feed XML file. A user or application can subscribe for blog updates." width="880" height="1100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M5dZxc7K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d6uiu7i083lch759jj2z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M5dZxc7K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d6uiu7i083lch759jj2z.jpeg" alt="Created an automatic email campaign using the RSS feed on MailChimp" width="880" height="1100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uWEMieE0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lrz5lq4325y7nbp8vjwk.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uWEMieE0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lrz5lq4325y7nbp8vjwk.jpeg" alt="Test email from RSS feed" width="880" height="1100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That was a fun, quick project to work on for a few hours and saved me an exponential amount of time in the future. 💪🏾&lt;/p&gt;

&lt;p&gt;⁉️ Anyone have experience with RSS feeds or subscribe to any?&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>php</category>
    </item>
    <item>
      <title>Using Atomic Habits to become a better software developer ⚛️</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Thu, 07 Oct 2021 07:30:42 +0000</pubDate>
      <link>https://dev.to/kgcodes/using-atomic-habits-to-become-a-better-software-developer-5ehi</link>
      <guid>https://dev.to/kgcodes/using-atomic-habits-to-become-a-better-software-developer-5ehi</guid>
      <description>&lt;p&gt;I’m currently working on building better habits (and breaking bad habits) in order to become a better software developer.&lt;/p&gt;

&lt;p&gt;I started reading (well, listening to) Atomic Habits by James Clear and so far it’s been insightful. ⚛️&lt;/p&gt;

&lt;p&gt;The first two concepts that have already moved me to make changes were:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Removing the points of friction in my environment for good habits I want to build
&lt;/h2&gt;

&lt;p&gt;— Ex. To keep from being stuck thinking of what to code or learn the next day, the day prior I write down what I want to code/learn while my mind is still active. That way I avoid analysis paralysis the next day and can quickly jump in. &lt;strong&gt;Remove friction&lt;/strong&gt;.&lt;br&gt;
— Ex. Some evenings I hop in bed and find it hard to get up and go to the office to code. So I started to keep my laptop bedside so that I can work there too if needed. &lt;strong&gt;Remove friction&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Rather than always try to make large improvements (and being discouraged when I fail), I focus on making small improvements daily, which add up over time, and provide daily satisfaction.
&lt;/h2&gt;

&lt;p&gt;— Ex. For working on my projects, I implemented a “never miss twice” policy for updates, and I will update even if I only have 10-30 minutes for a small change. Making even a little improvement daily adds up. &lt;strong&gt;1%+ improvement daily&lt;/strong&gt;.&lt;br&gt;
— Ex. I automated a reminder on my phone to make sure I learn at least one new programming concept/problem a day, whether it’s a coding challenge, new technology, or conceptual improvement. Even if it’s quick I make sure not to miss. &lt;strong&gt;1%+ improvement daily&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It’s not easy though, and sometimes I mess up, so I’m constantly looking for ways to improve my processes/accountability…&lt;br&gt;
⁉️ What ways are ya’ll using to build good habits and break bad ones?&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>motivation</category>
    </item>
    <item>
      <title>Best advice for big coding projects</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Thu, 25 Jun 2020 00:47:26 +0000</pubDate>
      <link>https://dev.to/kgcodes/best-advice-for-big-coding-projects-5d5g</link>
      <guid>https://dev.to/kgcodes/best-advice-for-big-coding-projects-5d5g</guid>
      <description>&lt;p&gt;⁣The best advice I’ve gotten (and applied) for solving large/complex development tasks is to research and map out a solution BEFORE you start coding. 🗺⠀&lt;br&gt;
⠀&lt;br&gt;
— Do the research, explore, and weigh all the potential options. ⠀&lt;br&gt;
— Does this task/project lend itself to some system design pattern? Explore that.⠀&lt;br&gt;
— Don’t forget to explore existing tools and services/APIs. Don’t reinvent the wheel.⠀&lt;br&gt;
— Write/type them in some organized form (document, diagram, etc.)⠀&lt;br&gt;
— Determine the logic flow and data flow; how does data move through your solution?⠀&lt;br&gt;
— Define and diagram the different components needed and how the will work together⠀&lt;br&gt;
— Also get feedback from another dev(s) if possible. ⠀&lt;br&gt;
⠀&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b183fRwD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xz9j818ktk5w4wdaw4rz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b183fRwD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xz9j818ktk5w4wdaw4rz.png" alt="coding big projects"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---rtlOa40--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ub8svdk41ghvfxvewm82.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---rtlOa40--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ub8svdk41ghvfxvewm82.png" alt="coding big projects"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5HYFqrgZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ej78d96o9tqwzrj88gm8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5HYFqrgZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ej78d96o9tqwzrj88gm8.png" alt="coding big projects"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zCJq31ww--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y6xe6g2c7tckkygpigzp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zCJq31ww--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y6xe6g2c7tckkygpigzp.png" alt="coding big projects"&gt;&lt;/a&gt;&lt;br&gt;
⠀&lt;br&gt;
This doesn’t have to take a long time or be a lot of writing, but even doing a little of this upfront can save a lot of time and produce better software.⠀&lt;br&gt;
⠀&lt;br&gt;
👉🏾 Curious; what is your advice for tackling large development projects/tasks?&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>codenewbie</category>
      <category>codequality</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Working on a hair professional mobile app (Xamarin, C#, PHP, MySQL)</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Wed, 29 Apr 2020 06:23:23 +0000</pubDate>
      <link>https://dev.to/kgcodes/working-on-a-hair-professional-mobile-app-xamarin-c-php-mysql-3k47</link>
      <guid>https://dev.to/kgcodes/working-on-a-hair-professional-mobile-app-xamarin-c-php-mysql-3k47</guid>
      <description>&lt;p&gt;Up late making great progress on a mobile app I’m working on called ‘Cut Corners’! I’m coding this in C# using the cross-platform Xamarin framework. Cut Corners helps potential clients find stylists in their area based on detailed criteria. 📲&lt;/p&gt;

&lt;p&gt;To avoid reinventing the wheel, I’m forked a lot of the back-end/API logic from a previous/similar app I built. This consists of a MySQL database/tables and simple PHP scripts. The PHP scripts are basically endpoints that expose the data layer for querying and mutation.&lt;/p&gt;

&lt;p&gt;Over the years I’ve learned that as a developer having some basic PhotoShop skills helps move things along when you don’t have the resources for a UI/UX. The owner provided the Cut Corners logo but I was able to modify it to work better in the app. I often use ‘Canva’ when I can instead of PhotoShop since it’s easier/free.&lt;/p&gt;

&lt;p&gt;Can’t wait to get the next build out to the owner very soon...have to do a few things first:&lt;br&gt;
· implement appointment and scheduling database tables&lt;br&gt;
· code a PHP script/API endpoint for retrieving availability and booking appointments&lt;br&gt;
· implement an availability schedule view and booking screen in the app&lt;/p&gt;

&lt;p&gt;Let me know if you have any questions about the app, the technology used, or if you have any tips/feedback. 🔆&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_xfNMATO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t1dj84rwbgi2s48t4ouy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xfNMATO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t1dj84rwbgi2s48t4ouy.jpeg" alt="mobile app and code"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---3hrKLAT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v3wr685bdrzhqgguky74.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---3hrKLAT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v3wr685bdrzhqgguky74.jpeg" alt="mobile app pro sign-in"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xFki8kCc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rxvk7b7zuaa99vue8h97.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xFki8kCc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rxvk7b7zuaa99vue8h97.jpeg" alt="mobile app sign-in"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yGlPz05O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tr7o9tkfpq6s3k0oxn5z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yGlPz05O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tr7o9tkfpq6s3k0oxn5z.jpeg" alt="canva logo editing"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>php</category>
      <category>sql</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>The technology stacks I use for software development (as a full-stack developer)</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Thu, 09 Apr 2020 02:28:39 +0000</pubDate>
      <link>https://dev.to/kgcodes/the-technology-stacks-i-use-for-software-development-as-a-full-stack-developer-4lnb</link>
      <guid>https://dev.to/kgcodes/the-technology-stacks-i-use-for-software-development-as-a-full-stack-developer-4lnb</guid>
      <description>&lt;p&gt;As a full-stack developer I enjoy building out a solution from top-to-bottom. Doing that involves learning and using various technologies at every layer of the stack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2c3d29c8vi5z132pxlgh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2c3d29c8vi5z132pxlgh.png" alt="The tech stacks I use"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I like to take an agnostic approach to development; meaning that I’m not loyal to any particular programming language, framework, or tool. I try to assess fit, trades-off, and choose the best tools for the job among what I know. Sometimes that means learning something completely new when it makes sense.&lt;/p&gt;

&lt;p&gt;I thought it’d be interesting to share the tech stacks for some of my projects:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdedfy90lf2m6ygcrmd2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdedfy90lf2m6ygcrmd2i.png" alt="Personal/portfolio website (www.kg.codes)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Personal/portfolio website (&lt;a href="http://www.kg.codes" rel="noopener noreferrer"&gt;www.kg.codes&lt;/a&gt;)&lt;br&gt;
· Google Cloud Platform (server/hosting)&lt;br&gt;
· Windows Server (server OS)&lt;br&gt;
· Microsoft IIS (server software)&lt;br&gt;
· MySQL (database)&lt;br&gt;
· PHP (web API)&lt;br&gt;
· PHP (website)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8ypvn3kkceke4i2pr2np.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8ypvn3kkceke4i2pr2np.png" alt="‘Doctor search’ mobile app"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;‘Doctor search’ mobile app&lt;br&gt;
· Google Cloud Platform (server/hosting)&lt;br&gt;
· Windows Server (server OS)&lt;br&gt;
· Microsoft IIS (server software)&lt;br&gt;
· MySQL (database)&lt;br&gt;
· Node.js / JavaScript (web API)&lt;br&gt;
· React Native / JavaScript (mobile app)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft0zuzli554m3yq5zof1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft0zuzli554m3yq5zof1n.png" alt="‘Social media’ mobile app"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;‘Social media’ mobile app&lt;br&gt;
· Amazon Web Services / AWS (server/hosting)&lt;br&gt;
· Linux (server OS)&lt;br&gt;
· Nginx (server software)&lt;br&gt;
· PostgreSQL (database)&lt;br&gt;
· .Net Core / C# (web API)&lt;br&gt;
· Xamarin / C# (mobile app)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj9lrr6zwxav93n7pqyzj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj9lrr6zwxav93n7pqyzj.png" alt="‘Small business search’ mobile app (‘Set Up Shopz’ on the App Store)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;‘Small business search’ mobile app (‘Set Up Shopz’ on the App Store)&lt;br&gt;
· Google Cloud Platform (server/hosting)&lt;br&gt;
· Windows Server (server OS)&lt;br&gt;
· Microsoft IIS (server software)&lt;br&gt;
· MySQL (database)&lt;br&gt;
· PHP (web API)&lt;br&gt;
· Xamarin / C# (mobile app)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvxrr4oo05v059th124kh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvxrr4oo05v059th124kh.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;‘Appointment scheduling’ web app&lt;br&gt;
· Amazon Web Services / AWS (server/hosting)&lt;br&gt;
· Linux (server OS)&lt;br&gt;
· Nginx (server software)&lt;br&gt;
· Cassandra (database)&lt;br&gt;
· Spring Boot / Java (web API)&lt;br&gt;
· Vue.js / JavaScript (website/app)&lt;/p&gt;

&lt;p&gt;Let me know if you have any questions about what/why I use a certain thing.&lt;br&gt;
Right now my favorites to work with are AWS, Linux, Nginx, PostgreSQL, Node.js, and React Native. 🙌🏾&lt;br&gt;
One knowledge gap I see I have is NoSQL databases; I have no experience there.&lt;/p&gt;

&lt;p&gt;What stack/technologies are ya’ll using right now?&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>csharp</category>
      <category>aws</category>
      <category>linux</category>
    </item>
    <item>
      <title>A 'Nike Foamposites' mobile app I developed was finally accepted by Apple</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Sat, 15 Feb 2020 18:10:06 +0000</pubDate>
      <link>https://dev.to/kgcodes/a-nike-foamposites-mobile-app-i-developed-was-finally-accepted-by-apple-28c7</link>
      <guid>https://dev.to/kgcodes/a-nike-foamposites-mobile-app-i-developed-was-finally-accepted-by-apple-28c7</guid>
      <description>&lt;p&gt;I’m happy to announce that after numerous attempts, an app I’d created, “Foamlicious”, has been accepted and is for sale on the Apple App Store. We actually developed this app a few years ago and this past summer attempted to rebrand the app for a new owner; it didn’t go well. ⠀ &lt;/p&gt;

&lt;p&gt;Apple repeatedly rejected the new version of the app due to it not being backed by Nike and it not having enough “app-like” features 😡. After renaming the app, clearly stating the non-affiliation with Nike all over the app, and adding a barcode scanner (pretty dope), Apple finally accepted the app.⠀ &lt;/p&gt;

&lt;p&gt;Foamlicious is the ultimate app for Foamposite shoes where you can find all the past Foamposites from the last 20 years as well as future releases. Plus, this app can do so much more:&lt;br&gt;
· Get updates (push notifications) when foams restock, for release dates, prices, and other general news&lt;br&gt;
· Scan a shoebox barcode to search for it in the app and to check it's authenticity&lt;br&gt;
· Add foams to your favorite list (synced over iCloud to all your devices).&lt;br&gt;
· Add upcoming releases/dates to your device calendar&lt;br&gt;
· Share foams over AirDrop, Messages, Mail, Facebook, etc.&lt;br&gt;
· Find matching apparel for your shoes. &lt;/p&gt;

&lt;p&gt;To develop the app, I used the following tech-stack:&lt;br&gt;
· Google Cloud Platform (server/hosting)&lt;br&gt;
· Windows Server (server OS)&lt;br&gt;
· Microsoft IIS (server software)&lt;br&gt;
· MySQL (database)&lt;br&gt;
· PHP (web API)&lt;br&gt;
· Xamarin / C# (mobile app) &lt;/p&gt;

&lt;p&gt;To summarize, I created a MySQL database/table to store all the shoes, exposed the table for querying/mutation via a PHP Web API, and created the actual app using the Xamarin cross-platform framework. The news articles are sourced from various Foamposite-related RSS feeds and entered into a database table by a PHP script that runs routinely. The push notifications are all done through a free API/service called OneSignal.⠀ &lt;/p&gt;

&lt;p&gt;Sometimes software development doesn’t always go as smoothly as we hope but it’s so rewarding in the end when we keep pushing through. 🏆 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nFoJx3ou--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rzatbzh3h2gxzrvre1w1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nFoJx3ou--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rzatbzh3h2gxzrvre1w1.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w-bvnegG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8wa8d6txzoivyll1p9r5.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w-bvnegG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8wa8d6txzoivyll1p9r5.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>xamarin</category>
      <category>php</category>
      <category>sql</category>
    </item>
    <item>
      <title>9 free/cool web APIs to use in your next project</title>
      <dc:creator>Kelvin Graddick</dc:creator>
      <pubDate>Sat, 28 Dec 2019 22:33:57 +0000</pubDate>
      <link>https://dev.to/kgcodes/9-free-cool-web-apis-to-use-in-your-next-project-16f1</link>
      <guid>https://dev.to/kgcodes/9-free-cool-web-apis-to-use-in-your-next-project-16f1</guid>
      <description>&lt;p&gt;There are many free web APIs out there now that you can integrate your mobile app, web app, or website with to easily add some very powerful features. A web API is an application programming interface which can be accessed over the internet using web-specific protocols.&lt;/p&gt;

&lt;p&gt;Some big names/companies expose their features/data for you to freely use in your own apps/websites this way. &lt;strong&gt;Here are 9 that I think could be used to make some great projects&lt;/strong&gt;:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Spotify API (music)
&lt;/h2&gt;

&lt;p&gt;With the Spotify API, you can integrate your app/website to discover music, play a user’s music, create playlist for a user, and more. For example, you could create your own music playlist discoverer and builder based on a user’s interests.&lt;br&gt;
&lt;a href="https://developer.spotify.com/documentation/web-api/" rel="noopener noreferrer"&gt;Spotify developer website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyrs7zs2d02s4ns67a2uc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fyrs7zs2d02s4ns67a2uc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Wit.ai API (text/voice processing)
&lt;/h2&gt;

&lt;p&gt;With the Wit.ai API, you can process text or speech and turn it into recognizable actions that your app/website can use. You could use this to build an intelligent bot for your app/website.&lt;br&gt;
&lt;a href="https://wit.ai" rel="noopener noreferrer"&gt;Wit.ai website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fp9m7jjef7d0ibzklzz3n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fp9m7jjef7d0ibzklzz3n.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Plaid API (bank account connect)
&lt;/h2&gt;

&lt;p&gt;With the Plaid API, you can allow user to connect their bank account without you knowing the details. The Venmo app already uses this! It’s only free for testing and then paid.&lt;br&gt;
&lt;a href="https://plaid.com" rel="noopener noreferrer"&gt;Plaid API website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjsdo26817upln3reg37a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjsdo26817upln3reg37a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Social Media APIs (Facebook/Insta/etc.)
&lt;/h2&gt;

&lt;p&gt;With these various APIs, you could allow login through a user’s social media account, post on behalf of a user, and retrieve a user’s profile. Plenty of app/services already use these as you know.&lt;br&gt;
&lt;a href="https://developers.facebook.com" rel="noopener noreferrer"&gt;Facebook Developers website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwkk5qod2yodzvdwxs7qp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwkk5qod2yodzvdwxs7qp.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Genius API (lyrics)
&lt;/h2&gt;

&lt;p&gt;With the Genius API, your app/website can look us song lyrics and the meanings for the lyrics. For example, you could create a Tupac lyric-spitting bot.&lt;br&gt;
&lt;a href="https://genius.com/developers" rel="noopener noreferrer"&gt;Genius Developers website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fckfr9s06uhqb13ijjalr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fckfr9s06uhqb13ijjalr.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. BetterDoctor API (healthcare provider)
&lt;/h2&gt;

&lt;p&gt;With the BetterDoctor API, you can integrate your app/website with nearby health provider information. For example, you could look up a user’s nearest dentist based on their insurance and location.&lt;br&gt;
&lt;a href="https://developer.betterdoctor.com" rel="noopener noreferrer"&gt;BetterDoctor developer website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fe7i0m5oz54mkvb2i6x43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fe7i0m5oz54mkvb2i6x43.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Recipe Puppy API (recipes)
&lt;/h2&gt;

&lt;p&gt;With the Recipe Puppy API, your app/website can look up recipes based on ingredients and search terms. For example, you could make and app that randomly gives a recipe each day based on what’s in the user’s fridge.&lt;br&gt;
&lt;a href="http://www.recipepuppy.com/about/api/" rel="noopener noreferrer"&gt;Recipe Puppy API website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Futitfcrihe7newv7qksd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Futitfcrihe7newv7qksd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. eBay API (shopping/selling)
&lt;/h2&gt;

&lt;p&gt;With the eBay API, your app/website can automatically search, buy, and/or sell on eBay. For example, you could make a website/service that automatically lists a user’s item for sale based on the best time of day.&lt;br&gt;
&lt;a href="https://developer.ebay.com" rel="noopener noreferrer"&gt;eBay developer website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F39kbvklsum51cucdc58h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F39kbvklsum51cucdc58h.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Bible API
&lt;/h2&gt;

&lt;p&gt;With the Bible API, your app/website can access Bible books, chapters, verses, etc. For example, you could make an app that automatically provides a Bible verse based on the day’s world news.&lt;br&gt;
&lt;a href="https://scripture.api.bible" rel="noopener noreferrer"&gt;Bible API website&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7d84z6epl7hvh8hsqv1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7d84z6epl7hvh8hsqv1f.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are so many more that I didn’t list and let me know if you know of some more good ones. Also, let me know what types of projects could be done with some of these.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
