<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Saleem</title>
    <description>The latest articles on Forem by Saleem (@sjaffer).</description>
    <link>https://forem.com/sjaffer</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%2F299203%2F668702de-0fbf-42e7-8bb6-46fa82eb3a7d.png</url>
      <title>Forem: Saleem</title>
      <link>https://forem.com/sjaffer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sjaffer"/>
    <language>en</language>
    <item>
      <title>A place for African side hustles</title>
      <dc:creator>Saleem</dc:creator>
      <pubDate>Tue, 25 Feb 2020 12:48:55 +0000</pubDate>
      <link>https://forem.com/sjaffer/a-place-for-african-side-hustles-35b6</link>
      <guid>https://forem.com/sjaffer/a-place-for-african-side-hustles-35b6</guid>
      <description>&lt;p&gt;I put together a small site that will tell the stories of Africans with side hustles:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sidehustler.africa"&gt;https://sidehustler.africa&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're interested in having your platform/site covered, fill in the form here:&lt;br&gt;
&lt;a href="https://forms.gle/sCmqaByj9LMo6EtTA"&gt;https://forms.gle/sCmqaByj9LMo6EtTA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tech Notes:&lt;br&gt;
Built with Hugo Static Site Generator and hosted free on Github Pages.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding Semantic Versioning</title>
      <dc:creator>Saleem</dc:creator>
      <pubDate>Wed, 01 Jan 2020 12:51:32 +0000</pubDate>
      <link>https://forem.com/sjaffer/understanding-dependency-versioning-3k7e</link>
      <guid>https://forem.com/sjaffer/understanding-dependency-versioning-3k7e</guid>
      <description>&lt;p&gt;After reading this guide you will have a better understanding of the &lt;a href="https://semver.org/"&gt;semantic versioning standard&lt;/a&gt; used within a majority of software eco-systems.&lt;/p&gt;

&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;What is in a Version Number?&lt;/li&gt;
&lt;li&gt;How this applies to your Application&lt;/li&gt;
&lt;li&gt;Carets and Tildes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is in a Version Number? &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

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

&lt;p&gt;For the rest of this guide let's assume our current version of our dependency is 1.0.0 .&lt;/p&gt;

&lt;p&gt;In the example above the version is divided into 3 components, with 1 being the major component, 0 being the minor component, and 0 being the patch component.&lt;/p&gt;

&lt;p&gt;When one of these components are updated this is what it means:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Major&lt;/em&gt;: Each major update is not backwards compatible with a previous version, this means that 2.0.0 is substantially different to 1.0.0 that &lt;strong&gt;it will break your application&lt;/strong&gt; using the 1.0.0 version if you don't make changes in how you use this dependancy.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Minor&lt;/em&gt;: A minor update introduces non-breaking changes this means that for example, a version of 1.10.0 &lt;strong&gt;will not cause your application to break&lt;/strong&gt; - so no changes are required.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Patch&lt;/em&gt;: A patch update also introduces non-breaking changes i.e 1.0.5 will still be able to &lt;strong&gt;work fine with your application&lt;/strong&gt; without having to change a thing. &lt;/p&gt;

&lt;h2&gt;
  
  
  How this applies to your Application &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"my_dep"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"another_dep"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"~1.0.0"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above code snippet is an example of the dependencies section in a package.json file.&lt;/p&gt;

&lt;h1&gt;
  
  
  Carets( ^ ) and Tildes( ~ ) &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;The caret or the tilde that is in front of the version number determines how the dependancy will be updated when you run "npm update".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;^&lt;/strong&gt; : this will update the dependency to the latest minor version available. i.e if 1.10.0 is the latest minor version - your dependency will be updated to that version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;~&lt;/strong&gt; : this will update the dependency to the latest patch version available. i.e 1.0.10&lt;/p&gt;

&lt;p&gt;Note: Using "npm update" will not automatically update to the next major version (2.0.0) -  you will have to manually update the package.json to the next major version and then fix your codebase of the breaking changes. &lt;/p&gt;

&lt;h3&gt;
  
  
  Thanks
&lt;/h3&gt;

&lt;p&gt;I hope this helps - feel free to comment or ask questions.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>firstyearincode</category>
      <category>codenewbie</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Pomodoro Productivity Technique for Development</title>
      <dc:creator>Saleem</dc:creator>
      <pubDate>Tue, 31 Dec 2019 08:51:41 +0000</pubDate>
      <link>https://forem.com/sjaffer/pomodoro-technique-for-development-168m</link>
      <guid>https://forem.com/sjaffer/pomodoro-technique-for-development-168m</guid>
      <description>&lt;h1&gt;
  
  
  The Pomodoro Technique
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OhaiNxey--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://entregurus.com/wp-content/uploads/2018/10/EntreGurus-Tomato-Timer-The-Pomodoro-Technique-1080x675.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OhaiNxey--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://entregurus.com/wp-content/uploads/2018/10/EntreGurus-Tomato-Timer-The-Pomodoro-Technique-1080x675.jpg" alt="drawing" width="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pomodoro is the italian word for tomato. &lt;/p&gt;

&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/Pomodoro_Technique"&gt;Pomodoro Technique&lt;/a&gt; was developed by Francesco Cirillo during the 1980s to improve productivity and combat procrastination.&lt;/p&gt;

&lt;p&gt;Why does this productivity technique involve a tomato you ask? Well Francesco used a kitchen timer that was shaped like a tomato like the one in the picture above. So my thoughts are he didn't want to procrastinate and overthink a name for his technique so he just used the word pomodoro :).&lt;/p&gt;

&lt;h2&gt;
  
  
  How does it work
&lt;/h2&gt;

&lt;p&gt;Basically it involves the following steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decide on a task to be done (typically something that can be achieved within 25 minutes)&lt;/li&gt;
&lt;li&gt;Set the timer for 25 minutes&lt;/li&gt;
&lt;li&gt;Start working with no distractions, &lt;em&gt;none&lt;/em&gt; at all.&lt;/li&gt;
&lt;li&gt;When the 25 minutes are over, take a 5 minute break. This is seen as 1 pomodoro.&lt;/li&gt;
&lt;li&gt;After you've completed 4 pomodoro's you can then award yourself with a longer break of 15 - 30 minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How does this apply to Software Development?
&lt;/h2&gt;

&lt;p&gt;Sometimes as a software dev there can be uninteresting parts of the job, maybe you're modelling a database, or creating a data layer to fetch data, or anything else that can be repetitive. This technique helps in a huge way to get through the grunt work.&lt;/p&gt;

&lt;p&gt;It also makes you super disciplined, as soon as that timer goes off you start working, no checking messages, no social media, nothing. Just focused work. You will find you get things done way faster this way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improves Planning
&lt;/h3&gt;

&lt;p&gt;After a while of using this technique you will be able to estimate tasks in terms of pomodoros i.e this service layer integration should take me 2 pomodoros for each model.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Start
&lt;/h2&gt;

&lt;p&gt;It's recommended to start with 6 pomodoros for the day, you don't want to over commit. Work your way up from 6 - 8 then possibly move further upward. &lt;/p&gt;

&lt;p&gt;In actual time this is 3.5 hours of work a day including breaks, I know this sounds like a little but you will be amazed at how much work you get done. &lt;/p&gt;

&lt;p&gt;The original technique places a large emphasis on planning before starting your day. I deviate from this a bit as I find that it causes me to procrastinate about what to do (yes, I'm a serial procrastinator). I don't plan my day in detail beforehand - my plan usually comes to life as I start working - i.e after the first pomodoro of the day.&lt;/p&gt;

&lt;h4&gt;
  
  
  Make it your own
&lt;/h4&gt;

&lt;p&gt;Take what works for you from this productivity technique i.e if 25 minute work session are too short increase it to 40 minutes for example. &lt;/p&gt;

&lt;p&gt;If you've used it, tried it after this article or tried it before, let me know in the comments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Timer Tools
&lt;/h2&gt;

&lt;p&gt;Instead of going out and getting yourself a kitchen timer, use one of these below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.tomighty.org/download"&gt;Tomighty&lt;/a&gt; - Desktop Application&lt;br&gt;
&lt;a href="https://chrome.google.com/webstore/detail/marinara-pomodoro%C2%AE-assist/lojgmehidjdhhbmpjfamhpkpodfcodef?hl=en"&gt;Marinara&lt;/a&gt; - A Chrome extension&lt;/p&gt;

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