<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.oneworldcoders.com/blog</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2022-10-18</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/provisioning-heroku-infrastructure-using-terraform</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-10-18</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/guide-to-upgrading-to-the-latest-heroku-stack</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-10-18</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/cf390b54-241b-4c95-abe7-65e46dfdb4d0/OWC+heroku+latest.jpeg</image:loc>
      <image:title>Blog - Guide to Upgrading To The Latest Heroku Stack - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/why-upgrading-rails-is-important</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-10-18</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1653904031997-2EZTXF787NQNL1J0ZZ0P/Rails+updgrade.jpeg</image:loc>
      <image:title>Blog - Why upgrading Rails is important? - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/the-role-of-technology-in-the-covid19-and-postcovid19-era</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/e88acfbb-aa46-4883-af59-1f7c793a1a50/christina-wocintechchat-com-UcZcsHSp8o4-unsplash.jpg</image:loc>
      <image:title>Blog - The role of technology in the covid19 and postcovid19 era - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/93fcd283-9547-4d40-bef5-6506daefa158/unnamed+%283%29.png</image:loc>
      <image:title>Blog - The role of technology in the covid19 and postcovid19 era - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/f75f43bd-bf10-40a6-a662-f997096725a5/unnamed+%285%29.png</image:loc>
      <image:title>Blog - The role of technology in the covid19 and postcovid19 era - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/5e1871a2-af65-4860-945e-e196f64e6100/unnamed+%284%29.png</image:loc>
      <image:title>Blog - The role of technology in the covid19 and postcovid19 era - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/africas-image-in-software-development</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-11-30</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1b55ce8f-263e-48c5-81dc-264a4f88470f/image+1.png</image:loc>
      <image:title>Blog - Africa’s Image in Software Development - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/73b5aea8-52a9-46c0-934b-a1d0eab003a4/image+5.png</image:loc>
      <image:title>Blog - Africa’s Image in Software Development - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/e0f41f2d-b79a-454a-af0c-fe7818708275/4.png</image:loc>
      <image:title>Blog - Africa’s Image in Software Development - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/cd05517f-b276-4b1c-a9a2-e7a4c35d40db/christina-wocintechchat-com-vLwH8bWoi_8-unsplash+%281%29.jpg</image:loc>
      <image:title>Blog - Africa’s Image in Software Development - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/factors-to-consider-when-outsourcing-software-development-team</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/3435b8f3-4909-4482-9a51-83969fbb447e/Good+communication.png</image:loc>
      <image:title>Blog - Factors to consider when outsourcing software development team - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/8c038897-480e-4bae-b223-db4002ef2e42/Research.png</image:loc>
      <image:title>Blog - Factors to consider when outsourcing software development team - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/ff263e61-d567-46e1-9761-fff583c985fc/art.png</image:loc>
      <image:title>Blog - Factors to consider when outsourcing software development team - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1de87c12-472c-4ffb-8312-3f55558d46e5/art+2.png</image:loc>
      <image:title>Blog - Factors to consider when outsourcing software development team - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/41759245-7846-46a7-8182-47d36de867c6/AMZ.png</image:loc>
      <image:title>Blog - Factors to consider when outsourcing software development team - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/how-outsourcing-software-development-team-helps-you-save-costs</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1633696151145-YTSV3GQ1IU6RT8K41W6T/2021-10-02+.10+AM+%281%29.png</image:loc>
      <image:title>Blog - How Outsourcing Software Development Team Helps you Save Costs - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1633696359400-TOJTN8WADW3WVSPH27IH/image+%286%29+%281%29.png</image:loc>
      <image:title>Blog - How Outsourcing Software Development Team Helps you Save Costs - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1633696327380-GVEJI86FJTYWQOZ23ITS/WhatsApp+Image+2021-10-02+at+2.47.10+AM+%283%29.png</image:loc>
      <image:title>Blog - How Outsourcing Software Development Team Helps you Save Costs - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1633696188849-SPRXSZJPDZVZAEEBBZ3G/Whats+%281%29.png</image:loc>
      <image:title>Blog - How Outsourcing Software Development Team Helps you Save Costs - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/part-2-networking-and-load-balancer-configuration-scaling-an-app-using-awss-ecs-with-tf</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-02-01</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1612189837655-KDJK3G23SXJQJXVIV7A0/image-asset.jpeg</image:loc>
      <image:title>Blog - Part 2: Networking and Load Balancer Configuration (scaling an app using AWS's ECS - with tf)</image:title>
      <image:caption>Optimised highways to enable good traffic for cars.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/one-world-coders-launches-community-20</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-01-04</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/using-terraform-to-provision-amazons-ecr-and-ecs-to-manage-containers-docker</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-08-31</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1598896294465-DDEP7P8V9KQQF3WMZR57/diego-fernandez-6Vg8N8u61aI-unsplash.jpg</image:loc>
      <image:title>Blog - Using Terraform to provision Amazon’s ECR, and ECS to manage containers (docker)</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/five-strategies-for-removing-violence-from-code-reviews</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/one-world-coders-community-10-launches-in-rwanda</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-06-29</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/covid-19-aftermath</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-08-07</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/ode-to-the-owasp-top-10</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/remote-work-is-here-to-stay</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/what-andela-got-wrong</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/the-real-problem-with-offshore-software-development</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/a-founders-story</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/One+World+Coders</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/Terraform</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/Heroku+Resources</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/Heroku</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/Rwanda</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/Africa</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/Heroku+Terraform</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/Infrastructure</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/blog/tag/Technology+Community</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2023-11-20</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/test-driven-development-tdd-my-friendly-coding-companion</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-11</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/fd77f380-c8ff-4b92-9198-ccdea3e19637/fix-for-no2.png</image:loc>
      <image:title>Apprentice Journals - TDD - My friendly Coding Companion - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/bf81d519-a0df-417d-a6d0-d5467077d176/fail-no4.png</image:loc>
      <image:title>Apprentice Journals - TDD - My friendly Coding Companion - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/2e0303a4-4b19-4c27-9d5e-bf3b35f312d8/pass-no.4.png</image:loc>
      <image:title>Apprentice Journals - TDD - My friendly Coding Companion - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/b25bae8a-c35b-45bf-99f9-bd811c7e46f9/func-first-failing-test.png</image:loc>
      <image:title>Apprentice Journals - TDD - My friendly Coding Companion - Make it stand out</image:title>
      <image:caption>Note: Javascript and Jest are used as the programming language and testing framework respectively</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/3ffc4d11-6a4f-48b8-8a98-4ac46fefa610/function-define.png</image:loc>
      <image:title>Apprentice Journals - TDD - My friendly Coding Companion - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/0v0qxtgs0bsc8yl1e8u4y235redyda</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-11</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/inheritance-vs-composition</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-07-29</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/dependencynbsp-injection-in-testing</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-05-28</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/law-of-demeter-1</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-05-26</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/python-circular-imports</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-05-20</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/in-the-beginning-there-was-design</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-05-12</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/4qmelzy08o0fn4jbcxipekxpd6sufk</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-05-12</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/require-vs-requirerelative</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-05-10</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcome-15th-january-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-01-18</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1610976614377-XV3PEN2OYZIUT029ZT5B/Screenshot+2021-01-18+at+15.15.16.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 15th January 2020 - The UnbeatablePlayer class with a getMove() function that implements the Player Interface and returns a promise number.</image:title>
      <image:caption>Because I must abide by the contract of the Player Interface, I had to wrap the return value from this.minimax.findBestMove() in Promise.resolve() function</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1610969000682-UXZDF7RU9NDIRJXTRFN9/Screenshot+2021-01-18+at+13.22.48.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 15th January 2020 - In my playGame() loop, I had some conditionals which checks the player that has the current turn, and expects a move by invoking its move inbuilt method function</image:title>
      <image:caption>You will notice that on line 41, 43, and 45, irrespective of who the player is, all i needed was a move, which in this case returns a position on the board for the current player</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1610975999521-U1NXTNML5XBC9X6LXJJ3/Screenshot+2021-01-18+at+15.14.12.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 15th January 2020 - Also did the same for the BeatablePlayer class which also defines a getMove() function that implements the Player Interface and returns a promise number.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1610973906718-NIJ0XKFJS0MKJBOSPUNJ/Screenshot+2021-01-18+at+14.44.38.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 15th January 2020 - The best way I went about this was to adopt the Interface-based approach to Polymorphism by defining an interface Player that has a contract getMove which takes in board as an argument and returns a Promise of type number.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1610975771708-I49WV7CRK3RDA49YZWEE/Screenshot+2021-01-18+at+15.14.49.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 15th January 2020 - The HumanPlayer class with an async getMove() function that implements the Player Interface and returns a promise number.</image:title>
      <image:caption>Note that the getMove function here is asynchronous, this is to enable me await the return value since this.display.askUserForInput is also an asynchronous function</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1610976995832-F8VT1JNN08SBYCAQNERZ/Screenshot+2021-01-18+at+15.36.20.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 15th January 2020 - Now in my PlayGame() function loop, I just call the getMove() function on the currentPlayer object to return the move of the turn taking player</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcome-2</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2021-01-04</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609528154096-4I1IIKKVOQLKIUKH7W91/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - In the async askUserForMove() function, I awaited for the user input which is returned from the getUserInput() when the promise resolves, convert it to a number, do a check to make sure is valid and then return a promise of type number. If it is not a number, a recursion takes effect on line 33, and this will invoke the getUserInput() function again and prompt the user for another input</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609531537254-WXHZUOPRDW488GF6ATSQ/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - For my askToPlayAgain() function, I had added 2 test case scenarios to test for a valid and invalid response, however, the test seems un-useful since the response the function returns is needed as an argument in the playAgain() function.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609531274519-RTETWHXBVP5P7XI4UQOC/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - What the display interface looks like</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609532997861-VELNQD7HDEZYOEIIGYI3/Screenshot+2021-01-01+at+22.27.22.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - Thereby, giving the askUserForMove() function in the CommandLineInteraction class, least or no knowledge of the internal working of the getUserInput() function in the CommandIO class, all it cares about is the users input been returned and not how the operation is been performed.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609520687186-MD2EW2H5COOMHPI60XDI/Screenshot+2021-01-01+at+18.50.04.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - Here I am now calling the getUserInput() in both the askUserForMove() and askToRestartGame() function which provides for me the users input.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609532859775-HB0DDQ6ND6T4IXK7BB8J/Screenshot+2021-01-01+at+21.09.01.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - A typical example where the Law of Demeter was practiced was by refactoring the askUserForMove() in the CommandLineInteraction class and pulling out the readline interface into its separate CommandLineIO class</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609527359125-7CKHTZ5CTD5Q48JX4Z3S/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - I also created a Class CommandLineIO that implements the IO interface, in the CommandLineIO, I implement an asynchronous getUserInput() function which wraps the inbuilt javascript readLine IO, that interacts with the CLI. I now have a generic interface that can have different implementations in our askUserForMove() Function and any other function that needs to get user input from the CLI.</image:title>
      <image:caption>Notice I have a created sleep function on line 4, this function returns a promise giving a certain timeout range, I adopted this approach because Nodejs is non-blocking, and by awaiting the sleep function on line 20 will cause the readLine stdin to wait for the user’s input, until the value of answer is defined. If the waitTimeInMin elapse without the promise resolving, the while loop invokes the sleep function again, and refreshes the time, again, and again until the promise is resolved.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609527218229-U6TB4G2DYBG866TZ90YI/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - It mocks a getUserInput() function which returns a promise of type string and the log() which is a void function the logs to the CLI</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609523846030-5DNN7OFR797NQ9N2XA29/Screenshot+2021-01-01+at+19.54.27.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609530668775-HHM8IWL13CEE4C0VJ217/Screenshot+2021-01-01+at+21.50.54.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - A typical example will be in my game class. I injected objects of the board, display and message class into its constructor</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609523542369-Y13JGQ0UM5908WXR8NWO/Screenshot+2021-01-01+at+19.52.03.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - I also deferred side effects when we pulled out all console.log() from my playGame() function and handed the responsibility to the show() in the display class, which calls the log() in the CommandLineIO class that prints values to the CLI</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609530205161-KBU4E7GNCMFM00GYY8GP/Screenshot+2021-01-01+at+21.43.02.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - I also had issues in passing a dynamic message variable in the readLine.question(), I decided to write a condition that checks if the available counts in the board are greater than zero, this means the game is still ongoing, then show the askPosition() message, otherwise if there are no more available positions on the board, show the playAgain() message. I now passed a variable message as the first argument into the function. This didn't work because I was doing a check against a new board instance that has a different board state in the playGame() function.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609519005675-U7C61NG1AGQ0IP2NJ90O/Screenshot+2021-01-01+at+18.32.40.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - What my hasWinner(), checkRowWin(), checkColumnWin() and checkDiagonalWin() functions previously looked like</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609741634944-IFUXFORZHQ4TB89CMXCA/Screenshot+2021-01-04+at+08.25.15.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - I had a challenge constructing how I wanted my game board to appear in the CLI, this was what I initially had, I was almost there but this is flawed because every time I make a move on the board, it gets overridden by the counter because I was explicitly overriding the positions of the board with the value of the counter each time I called the printboard().</image:title>
      <image:caption>This function also has side effects (console.log()) also not testable tricky to test, giving that i was returning the counter instead of the new array of result</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609532078753-A9K19MYJESJZMRVYP5LX/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - The degree of interdependency(coupling) amongst various parts of the system can be seen in the AppRunner class, where different modules that make up a complete game function is brought together in a parent module</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609531257346-CZF0RQDIZLG8L5URVUDH/Screenshot+2021-01-01+at+22.00.40.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - A typical example will be in my ConsoleInteraction class which implements the contracts of the display interface.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609523822550-58ZBI0JE55QYXM51R06V/Screenshot+2021-01-01+at+19.54.46.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609520524788-4EKSV9ASO8BJRGMAE1UD/Screenshot+2021-01-01+at+18.49.49.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - Here you will see that I have abstracted the readLine interface from the both functions above and only creates the interface inside the getUserInput() function in the CommandLineIO class</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609532641358-1DOSC61F6DZSYSQZJ1DA/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - Previously, I had the readLine interface that does studin and studout in the askUserForMove() and askToPlayAgain()functions in the CommandLineInteraction class.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609528442408-MT8CVAGI65HXH06K8S4I/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - In my test, I am now mocking the CommandineIO class by creating a MyIOMock class that also implements the IO interface and stubbing the behaviour of the getUserInput(), which represents the main function we want to test inside the CommandLineIO class</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609742348470-QO35O2A10PUXR0IINVRD/Screenshot+2021-01-04+at+08.23.39.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - A glimpse of how my board looks like in its default state.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609522416521-F8K9OAMO5BXKPAO5E1QR/Screenshot+2021-01-01+at+19.33.16.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - Here I am passing the MyIOMock class into the ConsoleInteraction class instead of the main CommandLineIO class where I created the readLine Interface that does the interaction with the CLI, to avoid bocking when I run my test, and now testing the behaviour of the getUserInput() function in the MyIOMock class instead of the getUserInput() function in the main ConsoleInteraction class.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609519164159-T2HP90BEGNVJM1IF5LE8/Screenshot+2021-01-01+at+18.32.13.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - versus What they now look like after minimizing by adopting the - Copy instead of Mutate</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609523194404-8UYEFNLV7S0W6AQPXV1I/Screenshot+2021-01-01+at+19.46.07.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609529196027-5HOHNY4JMV16TAU15Z3S/Screenshot+2021-01-01+at+21.26.20.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - I previously had a function I named playAgain() which was using the value returned from askToPlayAgain()(now askUserFroMove()) function. I had challenges figuring out how to test these functions because the functions previously did multiple things and had side effects</image:title>
      <image:caption>It converts the user input to uppercase It does a check for a valid symbol of Y</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609531753995-V9IB903DH81HZW7FHIMP/Screenshot+2021-01-01+at+22.08.40.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - A typical example will be in my Board class, where I have only functions that related to one another in terms of operations on the game board, no function relating to the console is found in this module.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609742120727-1LLNG5YTYWVKCV64HN51/Screenshot+2021-01-04+at+08.23.15.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - After refactoring the logic and better naming the function to what it actually does. It works and makes more sense with what I was trying to achieve.</image:title>
      <image:caption>Notice the conditional on line 18 to 22. now I am checking that only positions that are empty or have the default board state, should be assigned the value from the counter at any giving iteration. This worked perfectly.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609521888904-V2P08CGYVT003OTRLB6U/Screenshot+2021-01-01+at+19.21.19.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - I think I deferred mutating out state by mocking out the console interface in our test with the MockIO. Instead, I mimicked the behaviour of the game state for valid and invalid scenarios.</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609531191968-RH7LR5WT3IA23LVU56ZM/image-asset.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609529961218-0H3D6Q7TRMQ753SDX4W1/Screenshot+2021-01-01+at+21.39.02.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - 3. It was previously been invoked to restart the game at the end of every win or draw if the symbol provided is Y otherwise, return nothing to break the loop</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1609519933577-LRCO8R5CYT3WOKO1C3G5/Screenshot+2021-01-01+at+18.50.43.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome 11th - 18th Dec 2020 - I was previously creating the readLine.create Interface in both the askUserForMove() and the askToPlayAgain(), thereby duplicating, since I am trying to achieve the same thing which is to get the user’s input from the CLI by invoking the question() function on the interface variable readCLI</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcome-1</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-11-19</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1605801837438-0DGC1UP8VC3XLZCOLMKQ/Screenshot+2020-11-19+at+17.09.12.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome - First defined the variables and assigned them a type, before passing them as arguments into the constructor function.</image:title>
      <image:caption>Next, I took out the conditional statement, because it is not needed anymore since typescript is already handling validation by ensuring the values for currentAge, desiredRetirementAge and currentAge must all be integers.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1605800552004-9D9CP300WKYYQMT1UQS7/Screenshot+2020-11-19+at+16.53.47.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome - In my constructor function, I wrote a conditional statement that checks if either of currentAge, desiredRetirementAge, or currentYear is of type string, throw an exception with a custom message “Invalid, all inputs must be an Integer“, using the javascript Number.isInteger method</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1605802284044-43OLBH07Z04DQT5JRSEZ/Screenshot+2020-11-19+at+17.11.31.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome - I also deleted my test cases, because they really aren’t needed anymore</image:title>
      <image:caption>You can see that giving a string as an argument in my calculator instance, will automatically prompt an error, indicating that this can not run.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1605798808228-KOY57P5AB8NO39C0HFUU/Screenshot+2020-11-19+at+17.12.24.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome - Here is how my validation test looked like when I writing pure JavaScript</image:title>
      <image:caption>You would notice I am testing by throwing exception for wrong input type ‘string’. checkout out by blog where I wrote about Don't use exceptions for non-exceptional conditions.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1605801340366-HMXZLQGZ9W470RQBDMBH/Screenshot+2020-11-19+at+17.37.25.png</image:loc>
      <image:title>Apprentice Journals - Learning Outcome - What my tsconfig.json file.</image:title>
      <image:caption>On Line 7, I am telling typescript to read in any files it understands in the lib directory (with include).</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcome</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-11-18</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/nomoreapologies</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-09-17</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/xzo7jrbbziyd70puno4pu6c1ckfayj</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-07-08</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/law-of-demeter</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-06-25</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1592982899734-LE616EXBYBUSHUHQRWTO/Screen%2BShot%2B2020-06-24%2Bat%2B08.59.46.jpg</image:loc>
      <image:title>Apprentice Journals - Law of Demeter</image:title>
      <image:caption>In conclusion, Following this rule is very hard. Hence it is even been called as the Suggestion of Demeter  because it’s so easy to violate. But the benefits are obvious, any function that follows this rule, any function that “tells” instead of “asks” is decoupled from its surroundings. What Do I mean By “Tells” Instead of “Asks” Tell, Don’t Ask Principle states that instead of asking an object a question about it’s state, making a decision, and proceeding forward we should strive to tell an object what to do. Example of Ask def street_name(user) if user.address user.address.street_name else 'No street name on file' end end Example of Tell def street_name(user) user.address.street_name end class User def address @address || NullAddress.new end end class NullAddress def street_name 'No street name on file' end end Reference object-oriented-tricks-2-law-of-demeter demystifying-the-law-of-demeter-principle tell-dont-ask ruby-oop-events-and-the-tell-dont-ask-principle</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1592982959531-ZVAWBAUGUSXUFY0RQISI/Screen+Shot+2020-06-24+at+08.59.25.png</image:loc>
      <image:title>Apprentice Journals - Law of Demeter</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/sendgrid-with-ruby-on-rails</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-06-25</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/testing-pyramid</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-06-16</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1592294798841-A0RA1XKKG8LLP3W1U2UA/pyramid%2Btest.jpg</image:loc>
      <image:title>Apprentice Journals - Testing Pyramid - This test automation pyramid operates at three levels:</image:title>
      <image:caption>Unit tests Integration tests End-to-End tests</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/automatic-deploy-to-aws-with-github-actions</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-06-14</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/first-client-demo</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-06-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/working-with-cloudinary-in-rails-app</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-06-01</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1591011023620-KFRLJFC3GF4SJ34ZJMAN/Tezza_2020_02_24_152932868.jpg</image:loc>
      <image:title>Apprentice Journals - Working With Cloudinary in Rails App - Emmanuel Omona</image:title>
      <image:caption>co - author</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/my-experience-with-docker</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-05-28</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/dockerize-rails</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-05-22</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/cors-may-04</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-05-04</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/29th-april-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-29</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/23rd-april-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-23</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/my-take-on-owasp-and-rails-goat</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-23</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/22nd-april-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-22</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/20th-april-security</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-20</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/writing-my-own-queries-vs-using-active-record</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-20</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-20th-april</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-20</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/17th-april-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-18</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-15th-april</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-15</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/open-closed-principle</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-15</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/the-i-in-solid</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-14</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/april-10th-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-14</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/13th-april-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-13</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/11th-april-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-11</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/7th-april-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-08</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/5th-april-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/builder-design-pattern</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-14</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-03-april</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-02nd-april</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-31st-march</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/6th-april-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-04-05</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/march-30th</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-30</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-24th-march</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-25</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-23rd-march</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/23rd-march-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/17032020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-18</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/17th-march-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-18</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-17-march</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-18</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcome-monday-16th-march-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-16</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-12th-march</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-13</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcome-thur-12th-march-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-13</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/12th-march-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-13</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/11th-march-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-12</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-output-tue-10th-march-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-11</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/10th-march-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-11</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcome-mon-9th-march-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-10</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-9th-march</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-10</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/monday-mar-09-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-10</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/9th-march-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-10</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/apprenticeship-journey-day-11</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomethur-5th-marchnbsp2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-5th-march</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/6th-march-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/apprenticeship-journey-day-03</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-06</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/4th-march-2020-output</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-05</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcomes-4th-march-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-05</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/learning-outcome-wed-4th-march-2020</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-03-05</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/wtfcinh8dfcxotmysl9adlrq6ho6h2</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-26</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/my-interaction-with-geoffey</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-27</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/interaction-with-someone-new-kenneth</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-26</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/my-iteraction-with-claude</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-26</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/how-i-started-programming-emmanuel</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-25</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/introduction-kenneth</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-25</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/how-i-got-started-programming</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-25</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/xnqylmua3jhr3q4jre31bkjyfzp8xi</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-25</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/introduction-doug</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-06-24</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/LoD</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/strong+typing</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Email</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/functional+programming</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/unit+testing</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Respect</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/RSpec</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Controller+Spec</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Law+of+Demeter</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Deployment</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/ssh</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/RuboCop</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/DRY</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/stringio</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Hash</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Dependency+Inversion</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/oop</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Dependency+Injection</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Docker</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/compile</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Tic+Tac+Toe</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/open-closed+principle</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Postgres</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/recursion</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Request+Spec</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Byebug</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/SendGrid</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Heroku</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Tell+don%27t+ask</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Algorithm</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Hackathon</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Rails</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Tictactoe</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/One+World+Coders</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Game</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Cloudinary</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/SOLID</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Katas</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Testing+Pyramid</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/%22Tell+don%27t+ask%22</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Github+Actions</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Solid</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Dynamic+typing</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Rubber+Duck</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/TypeScript</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/refactoring</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/TDD</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/DevOp</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Ruby</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Refactoring</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/AWS</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Debug</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/End-to-End+Testing</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Interpreter</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Stub</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/React</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Cohesion+and+Coupling</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Static+typing</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Apprenticeship</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/weak+typing</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Software+Apprenticeship</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Interface</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/Polymorphism</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/apprentice-journals/tag/DAMP</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/services</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2021-01-30</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/contact-us</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2025-07-28</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/about-us</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2024-08-07</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/home</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <lastmod>2024-08-07</lastmod>
  </url>
  <url>
    <loc>https://www.oneworldcoders.com/team</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2025-11-05</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1620114137547-SU55PEQ1T4XTVJ2X47J3/john_mugiraneza.jpeg</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1583993916998-I73QDQLITJJ54D08GMZ3/Emmanuel_pic.png</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/7687ca59-f434-4e34-923b-6a29d435527e/echeru-rodney-portrait-photo.jpeg</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1583996029878-3O4T8KAUV58WMMA6P2BI/robert-rugamba.jpg</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1612256208529-4QCCU6GHAHB7LJI4N354/Chiwen_profile.jpg</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1619785879354-FKJ3XM2KVVHTUM35SJ2D/david_gasana_manzi.jpeg</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/1619785923239-9FYJGK5PIBCE64M0D977/edward_obala.jpeg</image:loc>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5dfc0291e4c3b00157471aa8/01bf256d-1a33-4c56-ac8e-a333fcb8e577/ddumba+kenneth+joseph.jpeg</image:loc>
    </image:image>
  </url>
</urlset>

