<?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: Dattatraya Anarase</title>
    <description>The latest articles on Forem by Dattatraya Anarase (@d4ttatraya).</description>
    <link>https://forem.com/d4ttatraya</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%2F30392%2F294aebc1-7993-49c1-97b1-569afbb94a09.png</url>
      <title>Forem: Dattatraya Anarase</title>
      <link>https://forem.com/d4ttatraya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/d4ttatraya"/>
    <language>en</language>
    <item>
      <title>Protected Properties and Methods in Swift - An Alternative</title>
      <dc:creator>Dattatraya Anarase</dc:creator>
      <pubDate>Tue, 24 Oct 2017 08:59:45 +0000</pubDate>
      <link>https://forem.com/d4ttatraya/protected-properties-and-methods-in-swift---an-alternative-a6i</link>
      <guid>https://forem.com/d4ttatraya/protected-properties-and-methods-in-swift---an-alternative-a6i</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally posted on &lt;a href="https://d4ttatraya.me/Protected-Access-Swift/"&gt;my blog site&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's always been a quite demand from swift developers to add &lt;code&gt;protected&lt;/code&gt; access in &lt;a href="https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html"&gt;Swift's access control&lt;/a&gt;. Lot of times it's been asked on stack-overflow that how to write protected methods in swift. But still swift hasn't provided any direct way to do it. Can we really achieve protected access in Swift? Yes, we can!&lt;/p&gt;

&lt;p&gt;Apple has already published a blog &lt;a href="https://developer.apple.com/swift/blog/?id=11"&gt;Access Control and protected&lt;/a&gt; in 2014 regarding this demand and how unnecessary it is. But still I believe there are lot of situations in projects where we need to hide some properties and methods from outside classes but only accessible to children. So here's what I have come up with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Animal.swift file&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Animal&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;fileprivate&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;protectedVar&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="kd"&gt;fileprivate&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;protectedFunc&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="c1"&gt;//do stuff}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Animal&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;doSomething&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;protectedVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="nf"&gt;protectedFunc&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we try to access &lt;code&gt;protectedVar&lt;/code&gt; or &lt;code&gt;protectedFunc()&lt;/code&gt; from outside of &lt;em&gt;Animal.swift&lt;/em&gt; file then compiler will throw an error.&lt;br&gt;
To achieve protected access like this only thing we need to keep in mind that &lt;strong&gt;children must be declared in same file as parent declared in&lt;/strong&gt;. Also this approach can not be used while developing libraries, packages or frameworks.&lt;/p&gt;

&lt;p&gt;Have you any time stuck searching for protected access in Swift? Then tell me how you got through it in comments below.&lt;br&gt;
Also if you have any other solutions, please post those here or on &lt;a href="https://twitter.com/D4ttatraya"&gt;Twitter @d4ttatraya&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;References: &lt;a href="https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html"&gt;Apple's Developer Guide&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>ios</category>
      <category>pairprogramming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Handover Project Using Pair Programming</title>
      <dc:creator>Dattatraya Anarase</dc:creator>
      <pubDate>Tue, 26 Sep 2017 19:52:27 +0000</pubDate>
      <link>https://forem.com/d4ttatraya/handover-project-using-pair-programming-9bl</link>
      <guid>https://forem.com/d4ttatraya/handover-project-using-pair-programming-9bl</guid>
      <description>&lt;p&gt;Currently I am handing over my ongoing iOS project to my replacement guy. This is the first time I am handing over my work to any buddy. So I was under little pressure of how can I make sure that he will understand almost every thing I built in this project. I was planning my handover module wise, feature wise, classes wise, etc but I ended up handing over project by pair programming!&lt;/p&gt;

&lt;p&gt;This was not at all planned but it happened to be in this way. Two three weeks before arriving replacement guy I stopped implementing new features and started refactoring my code. While refactoring I found that my application code and back end services code was very tightly coupled and that should anyhow be get decoupled. So I started putting interfaces between services and application, using protocols. By the time this guy arrived and I was in the middle of refactoring. Instead of explaining him existing working, coupled code, I continued refactoring the code while this guy was sitting next to me and carefully watching what I was doing.&lt;/p&gt;

&lt;p&gt;Then after spending around one week like this he started getting good idea of existing code and new proposed refactoring. Then he started telling me ways to decouple code, and then he started actually refactoring slowly. Then we both started planning refactoring and cleaning code. Now I am sitting next to him and watching him refactoring the existing code; ðŸ˜Š&lt;/p&gt;

&lt;p&gt;I think now that he is getting better idea of existing code also and newly re-factored code also. What do you guys think of this approach of handing over projects by pair programming? Please feel free to criticize my approach and leave your opinions and suggestions below; thanks!&lt;/p&gt;

</description>
      <category>pairprogramming</category>
      <category>softwaredevelopment</category>
      <category>handover</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Defining Done As Boolean</title>
      <dc:creator>Dattatraya Anarase</dc:creator>
      <pubDate>Sun, 10 Sep 2017 09:11:03 +0000</pubDate>
      <link>https://forem.com/d4ttatraya/defining-done-as-boolean</link>
      <guid>https://forem.com/d4ttatraya/defining-done-as-boolean</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally posted on &lt;a href="https://d4ttatraya.github.io/Defining-Done/"&gt;my blog site&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Often in software development environments its been asked to developers whether they are done with their task or not. And its pretty obvious question for managers to ask to developers, nothing wrong or unexpected. Developers tend to answer this question as "yes, I am done" and if anything that can be wrong and unexpected here is what they mean by &lt;em&gt;done!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eGKkRiwX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/pjwp71vaoe1tqc9suiq2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eGKkRiwX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/pjwp71vaoe1tqc9suiq2.jpg" alt=""&gt;&lt;/a&gt;(Image Courtesy: &lt;a href="http://www.quickmeme.com"&gt;http://www.quickmeme.com&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;What developer mean by done can vary from developer to developer and we can not predict what actually done by him/her. Is &lt;em&gt;done&lt;/em&gt; a boolean that clearly means either not at all done or actually finished everything? And again what is mean by 'actually finished everything'? As definition of &lt;em&gt;done&lt;/em&gt; varies from person to person, there are always chances of understanding/assumptions gaps between developers' &lt;em&gt;done&lt;/em&gt; and managers' &lt;em&gt;done&lt;/em&gt; and business persons' &lt;em&gt;done&lt;/em&gt; and its consequences can disturb the whole product delivery chain and can attract negative attention towards that developer.&lt;/p&gt;

&lt;p&gt;So here I have listed some of the &lt;em&gt;done&lt;/em&gt;'s in order from totally wrong to almost right:&lt;/p&gt;

&lt;h2&gt;
  
  
  Just Works
&lt;/h2&gt;

&lt;p&gt;Many times, rather most of the times developers say they are done once they have written a code that just works. So they write code for new feature, run it and see if its working. Is this right definition of &lt;em&gt;done&lt;/em&gt;? Of course not. Why? Because code that just works is not approved by clean coders as final code. To know about how code that just works is not perfect solution, have a look at &lt;a href="https://d4ttatraya.github.io/Dirty-Code"&gt;my previous post&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Works and Clean, Unit Tested
&lt;/h2&gt;

&lt;p&gt;So, code that just works is not enough to say that we are done with feature. We should write that code matching standards of existing code and it should be clean; that is readable, testable, modifiable. Also we should add unit tests to make sure that code is working as intended in various test cases. Even if we did this, we are not done to say 'I am &lt;em&gt;done!&lt;/em&gt;'&lt;/p&gt;

&lt;h2&gt;
  
  
  Works and Clean, Unit Tested and Passes Automated Tests
&lt;/h2&gt;

&lt;p&gt;Once we have code that works, code that is clean and code that is unit tested, we have to look for next criteria to get feature done. And that criteria is to pass all the already written automated tests. These automated tests can be integration tests and acceptance tests. Integration tests make sure that newly written code is integrated with existing system correctly and breaks nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Works and Clean, Unit Tested and Passes Automated Tests and QA Approved
&lt;/h2&gt;

&lt;p&gt;Once we have finished all the above steps, still we are not done. What is remaining now? After finishing all the above steps, we should handover working system to QA and wait for his/her feedback, either bugs, modifications or approval. When QA approves our newly implemented feature, then and then only we can say that "I am &lt;em&gt;done!&lt;/em&gt;", finally. So now we can say that our &lt;strong&gt;&lt;em&gt;done&lt;/em&gt; is boolean where not at all done or doesn't work or all above definitions falls under value-0 and only this definition falls under value-1&lt;/strong&gt;.&lt;br&gt;
As Uncle Bob says-&lt;br&gt;
&lt;em&gt;Done means done, no complete, no done-done.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus
&lt;/h2&gt;

&lt;p&gt;So many times its mentioned that we should always re-factor or clean the existing code, we can add this too in our definition of &lt;em&gt;done&lt;/em&gt;. We should not say &lt;em&gt;done&lt;/em&gt; until we re-factor(if required) existing code related to our newly written feature.&lt;/p&gt;

&lt;p&gt;Every company has their own definition of &lt;em&gt;done&lt;/em&gt;, but if any company doesn't then they should get it defined immediately and should ask their employees to follow it.&lt;/p&gt;

&lt;p&gt;If you have already defined your own &lt;em&gt;done&lt;/em&gt; or have defined it now, then don't forget to put your definition in comments below!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;References:&lt;br&gt;
Uncle Bob's Clean Coder Book and &lt;a href="https://www.youtube.com/watch?v=BSaAMQVq01E"&gt;Talk About Professionalism&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>unittesting</category>
      <category>softwaredevelopment</category>
      <category>professionalism</category>
    </item>
    <item>
      <title>Advantages(!) of Dirty Code</title>
      <dc:creator>Dattatraya Anarase</dc:creator>
      <pubDate>Fri, 18 Aug 2017 19:39:51 +0000</pubDate>
      <link>https://forem.com/d4ttatraya/advantages-of-dirty-code</link>
      <guid>https://forem.com/d4ttatraya/advantages-of-dirty-code</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally posted on &lt;a href="https://d4ttatraya.github.io/Dirty-Code/" rel="noopener noreferrer"&gt;my blog site&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;First and foremost advantage for me is that I &lt;em&gt;don't need to define it&lt;/em&gt;; ðŸ˜Š! Almost everyone, who have written any kind of program, knows what dirty code is; whether or not everyone realizes it is another story.&lt;/p&gt;

&lt;p&gt;Internet is flooded with principles, rules, techniques, best practices, how-to steps to write code. And now-a-days almost every programmer is also talking about some kind of techniques to follow while writing code in respective programming languages. While using such techniques in writing code we have to follow lots of rules and best practices. Ultimately it puts many constraints to write code freely, slows us down, makes us fail to achieve time-lines of deliveries, and much more pain than any &lt;em&gt;real&lt;/em&gt; programmer can imagine.&lt;/p&gt;

&lt;p&gt;Here is high-level summary of side-effect of following such practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Takes lot of time to name things&lt;/li&gt;
&lt;li&gt;Needs unnecessary separation between modules&lt;/li&gt;
&lt;li&gt;Makes us write lot of extra code which never will be in product builds&lt;/li&gt;
&lt;li&gt;Not allowing to add comments&lt;/li&gt;
&lt;li&gt;Force to make intentional errors first and then solve them
Let's get into more details of these side effects and see how painful they are.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Naming Things
&lt;/h2&gt;

&lt;p&gt;Many people around internet talks about giving &lt;em&gt;meaningful names&lt;/em&gt; to variables, functions, classes, modules and their necessity. But why it is so necessary? What will happen if you name a variable &lt;code&gt;d&lt;/code&gt; instead of &lt;code&gt;numberOfDaysInTrailPeriod&lt;/code&gt;?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;numberOfDaysInTrailPeriod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No error will be generated by compiler and nothing is going to break runtime either.&lt;br&gt;
Similarly this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;rdsTrail&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;&lt;span class="c1"&gt;//code}&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;remainingDaysInTrailPeriod&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;&lt;span class="c1"&gt;//code}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Come on, let's not waste our time thinking appropriate and meaningful names for things.&lt;/p&gt;

&lt;p&gt;If we ourselves in future or anyone else is going to work on this code later will debug and understand what &lt;code&gt;int d&lt;/code&gt; and what &lt;code&gt;int rdsTrail()&lt;/code&gt; stands for.&lt;/p&gt;

&lt;h2&gt;
  
  
  De-coupling of Modules
&lt;/h2&gt;

&lt;p&gt;This is another most discussed topic under some techniques when writing bigger projects which contains many modules interacting with each other. This is also brought on when writing interfaces for modules. I don't understand what makes them think to hide implementations behind these interfaces? They call it some kind of &lt;em&gt;abstraction&lt;/em&gt;.&lt;br&gt;
No one is going to disturb that implementation. Here we are already tired implementing new features and fixing bugs; and why should we go and change others' implementations.&lt;br&gt;
And why should we keep fine separation between modules if they are interacting with each other so intensely and so frequently? We have written modules for our project and our project is useless if we remove any of the modules. Then why think as if we are going to use each module separately and independently.&lt;/p&gt;

&lt;p&gt;If in future we need to replace any module then just modify respective code according to new module, or if need to reuse it in any other project just rewrite it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Unit Tests
&lt;/h2&gt;

&lt;p&gt;Yet another myth of programmers, just to put more and more efforts and time writing simple piece of code which will take no more than a minute. The main purpose of unit testing is to see if our code is working as expected or not, but if there are QAs and testers sitting next to us why should we bother about testing code by ourselves?&lt;br&gt;
Unit testing unnecessarily forces us to split our big good fat functions to smaller chunks. Putting limit to number of lines in functions also puts limit to our speed of writing them. Also why would we always follow the rule of &lt;em&gt;single responsibility&lt;/em&gt; and &lt;em&gt;top to bottom flow&lt;/em&gt; of functions calls? It's of course going to slow us down.&lt;/p&gt;

&lt;p&gt;If anyone wants to test workability of code after making some changes or adding more code then he/she should just have to give program to testers.&lt;/p&gt;
&lt;h2&gt;
  
  
  Readability
&lt;/h2&gt;

&lt;p&gt;People also says that &lt;em&gt;code should written in a way that not only computers but also humans can understand it&lt;/em&gt;. Again, if we tried to follow this rule then we need to waste our time writing code which can easily be understood by another programmers just by reading it. But, simply, if we are having such beautiful and powerful IDEs why programmers need to read code instead of run it and watch output direct.&lt;br&gt;
Another constraint they put here is &lt;em&gt;no more comments&lt;/em&gt; in code. All the IDEs support adding comments in code. Instead of trying to make it understandable by just reading code, let's put comments wherever needed to explain. In above example, we can add comment like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//number of days in trail period&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is nothing wrong in this, neither compiler throws error nor compiled build will include these comments.&lt;/p&gt;

&lt;p&gt;If we are worrying about understandability of our code by reading, let them understand it by debugging it or by reading console logs or simply by reading comments.&lt;/p&gt;

&lt;h2&gt;
  
  
  TDD
&lt;/h2&gt;

&lt;p&gt;Now I can use this word, NIGHTMARE! TDD is nothing but a nightmare to all programmers, particularly to one who actually follows it. &lt;em&gt;Make a mistake, correct it; again make another, correct it...&lt;/em&gt; How silly is this? And this flow, believe me, creates another parallel program that is bigger than actual program, also takes more than double time. And what purpose this serves is forces us &lt;strong&gt;to follow all above rules&lt;/strong&gt;.&lt;br&gt;
To make even very small modifications we need to first modify respective tests or to add small code we need to first write test. That is we have to think about test first and then implementation; isn't it time consuming?&lt;/p&gt;

&lt;p&gt;Instead of let tests drive our development why can't we go straight forward and start without making any errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  At the end
&lt;/h2&gt;

&lt;p&gt;I would like to argue you about not fall for what people are saying and just ignore following side-features of our code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy to read, understand&lt;/li&gt;
&lt;li&gt;Easy to replace modules, algos&lt;/li&gt;
&lt;li&gt;Easy to debug and fix bugs&lt;/li&gt;
&lt;li&gt;Easy to modify and reuse&lt;/li&gt;
&lt;li&gt;Easy to add new features
We can think of these whenever it's required in future. So just chill and &lt;em&gt;write a code that just works!&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;You know what do I mean by this blog post...!!!&lt;/em&gt;&lt;/strong&gt;&lt;br&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%2F0jhbkqyrh54rm4qm2dd5.jpg" 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%2F0jhbkqyrh54rm4qm2dd5.jpg" width="800" height="535"&gt;&lt;/a&gt; (Image Courtesy: &lt;a href="mailto:rathod.milan053@gmail.com"&gt;rathod.milan053@gmail.com&lt;/a&gt;)&lt;br&gt;
If you are on either side of coding, dirty side or whatever the other side, please leave comments and give a ðŸ‘ !&lt;/p&gt;

&lt;p&gt;&lt;em&gt;References: Uncle Bob's Clean Code&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cleancode</category>
      <category>programming</category>
      <category>tdd</category>
      <category>unittesting</category>
    </item>
  </channel>
</rss>
