<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Paresh</title>
    <description>The latest articles on DEV Community by Paresh (@pareshjoshi).</description>
    <link>https://dev.to/pareshjoshi</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%2F235956%2Fb6a15d50-c8d8-47fd-bc72-7949646ff001.jpg</url>
      <title>DEV Community: Paresh</title>
      <link>https://dev.to/pareshjoshi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pareshjoshi"/>
    <language>en</language>
    <item>
      <title>RDBMS or NoSQL: The question that pops up with every new project!</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Wed, 22 Jan 2020 05:48:42 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/rdbms-or-nosql-the-question-that-pops-up-with-every-new-project-1gpc</link>
      <guid>https://dev.to/pareshjoshi/rdbms-or-nosql-the-question-that-pops-up-with-every-new-project-1gpc</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QSHp-nuV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/74f1hg2gifjlnoszvea1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QSHp-nuV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/74f1hg2gifjlnoszvea1.png" alt="Alt Text" width="345" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Barun is starting his next software development assignment soon, but his biggest worry is - SQL or NoSQL and he is pondering about these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Which database to use for this new project?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Should I use relational database or NoSQL?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MongoDB is nice, it is schema-less and it does not require creating tables and normalize the structure, should I just select it for this project? &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Or whether I just use cloud-native databases like Amazon DynamoDB or Cosmos DB? &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No wait, I heard Redis can also be used for persistence and it is a key-value pair so that may also fit well here! The choices are endless...&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Have you ever come across these questions or a debate on which database is right for your project? The decision depends on number of factors and there are dozens of articles available over internet explaining pros and cons of different options. I am not going to repeat them here. I am rather interested in documenting what some of the popular internet apps are using as their data store. I'd done this exercise in the past, but lost the record. While doing this exercise again, I thought this could be useful for wider #DEVCommunity.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It would be interesting to know from you if you have gone through the process of making decision on choosing the right data store for your application. Feel free to add your comments to build this knowledge base.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Twitter - Twitter was built on MySQL and everything was stored in a single instance of database. However, as platform evolved, it is using number of different database technologies - MySQL, PostgreSQL, Vertica, Blobstore, Graph store, Hadoop. You can read more information about this &lt;a href="https://blog.twitter.com/engineering/en_us/topics/infrastructure/2017/the-infrastructure-behind-twitter-scale.html"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Facebook - MySQL, Memcached, Haystack (for photo storage), Hadoop and Hive. Read more about complete technology stack used by Facebook &lt;a href="https://royal.pingdom.com/the-software-behind-facebook"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Youtube - MySQL, Bigtable&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LinkedIn - traditionally used Oracle and key-value stores such as Voldemort. But then moved to distributed data store, &lt;a href="https://engineering.linkedin.com/espresso/introducing-espresso-linkedins-hot-new-distributed-document-store"&gt;Espresso&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Instagram - &lt;a href="https://instagram-engineering.com/instagration-pt-2-scaling-our-infrastructure-to-multiple-data-centers-5745cbad7834"&gt;Instagram mainly uses two database systems: PostgreSQL and Cassandra.&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DEV.together - &lt;a href="//docs.dev.to/technical-overview/stack/"&gt;PostgreSQL as primary datastore and Redis for cached data&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: this information is collected from different forums, engineering blogs and Q&amp;amp;A sites, if you think anything is incorrect, feel free to point out, I will be happy to update the post.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>database</category>
      <category>sql</category>
      <category>nosql</category>
      <category>backend</category>
    </item>
    <item>
      <title>Mistake #3 - Not thinking about alternatives</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Mon, 18 Nov 2019 10:03:06 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/mistake-3-not-thinking-about-alternatives-jn1</link>
      <guid>https://dev.to/pareshjoshi/mistake-3-not-thinking-about-alternatives-jn1</guid>
      <description>&lt;p&gt;It's been few weeks since a new post was published in the series of learning from mistakes. In the first two posts, we went through what could go wrong if you jump into coding without understanding the problem statement and start making too many assumptions.&lt;/p&gt;

&lt;p&gt;The next thing on the list is a very common mistake that even experienced programmers make—and that is—not thinking about alternative solutions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xl58byW3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/5/56/Wafer_Lock_Try-Out_Keys.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xl58byW3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/5/56/Wafer_Lock_Try-Out_Keys.jpg" alt="there was an image here" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have a clear understanding about the problem statement, you start designing a solution around it. I've seen that quite often, programmers start implementing the first solution they derived for the problem. I've to admit, I've been into this category for initial years in my career, until one day where I had to fill in design document template where there was section titled—rejected alternatives—and that helped me understand that I am doing something wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aH_bVcxX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.needpix.com/rsynced_images/arrows-3438163_1280.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aH_bVcxX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.needpix.com/rsynced_images/arrows-3438163_1280.png" alt="there was an image here" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thinking about alternative solutions enables you to reduce the chances that you may fail to notice something important—as you will be thinking about different options in the given context, and asking questions to get more details. It also helps you figure out what is important to the end user. For example, in some cases—UI design is less important for end of day batch jobs, but focus needs to be on performance of processing data.&lt;/p&gt;

&lt;p&gt;It could also help you avoid reinventing the wheel and you may just need to integrate with some existing component, it all depends on the context though. My point here is to try thinking about alternative solutions, ask questions, talk to people who are experienced in that domain— be it a technical or functional.&lt;/p&gt;

&lt;p&gt;It also helps your stakeholders understand why the solution you are proposing is best fit as compared to other alternatives.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/sBqAk_fvKx8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Have you been making any of these mistakes?&lt;/p&gt;

</description>
      <category>mistakes</category>
      <category>programmer</category>
      <category>developer</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Hello DEVs, have you received your hacktoberfest swag?</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Wed, 13 Nov 2019 04:38:33 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/hello-devs-from-india-have-you-received-your-hacktoberfest-swag-594p</link>
      <guid>https://dev.to/pareshjoshi/hello-devs-from-india-have-you-received-your-hacktoberfest-swag-594p</guid>
      <description>&lt;p&gt;It was mentioned that it could take 2-4 weeks to get the kits shipped to non-US address. Just checking with fellow DEVs if they received their kits?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>When your hard-work pays off</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Fri, 08 Nov 2019 06:26:55 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/when-your-hard-work-pays-off-11pd</link>
      <guid>https://dev.to/pareshjoshi/when-your-hard-work-pays-off-11pd</guid>
      <description>&lt;p&gt;There will be obstacles, there will be mistakes, but with hard work there is no limit on what you can achieve. There are times when software developers' hard work pays off. You experience feeling of the happiness that words can't explain.&lt;/p&gt;

&lt;p&gt;You have been assigned a critical production issue on Friday and you start thinking that your weekend will be at office now! You start understanding the root cause of the issue. And follow number of actions to get to the solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You read through the issue description and get more details from the user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You then try and get hold of production environment (which you will not get).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You try to replicate the issue on other environment where you have access. You use same artifacts which are deployed on production server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You try and get a copy of the production database.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You try and follow exactly same steps as user to reproduce the issue locally, but no luck.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You then try and find out whether there has been any change recently deployed to production server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You drill down commit details between two versions, and figure out if there has been any change in the area where bug is reported.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You try and follow many other actions from your checklist and see if you can find the root cause of the issue. The actions listed here seems easy, but it can take days to accomplish them and one day you will be able to pin point the knock-on change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You then roll up your sleeves and try debugging the application and see what could possibly go wrong. Ah! It was a null reference exception at line 320! You start celebrating and want to explain your findings to someone. You feel like you should be awarded Kudos for this. However, it is 11 pm and you are only one in the office!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, 2 weeks of hard work, no code review comments and your solution works on UAT and Production environment. That happiness can't be explained to anyone and then you start singing 'Bug Fix Hua'.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/kP5fKTRrjIY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;What was your happiest moment while fixing bugs?&lt;/p&gt;

</description>
      <category>bug</category>
      <category>happiness</category>
      <category>lifeofsoftwarengineer</category>
      <category>song</category>
    </item>
    <item>
      <title>Does Dapr fits your need? Then do not reinvent the wheel</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Wed, 30 Oct 2019 05:31:18 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/does-dapr-fits-your-need-then-do-not-reinvent-the-wheel-2aeg</link>
      <guid>https://dev.to/pareshjoshi/does-dapr-fits-your-need-then-do-not-reinvent-the-wheel-2aeg</guid>
      <description>&lt;h3&gt;
  
  
  What is Dapr?
&lt;/h3&gt;

&lt;p&gt;Distributed APplication Runtime. An event-driven, portable runtime for building microservices on cloud and edge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.defense.gov%2F2018%2FAug%2F03%2F2001950301%2F-1%2F-1%2F0%2F180803-F-FT687-001.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia.defense.gov%2F2018%2FAug%2F03%2F2001950301%2F-1%2F-1%2F0%2F180803-F-FT687-001.JPG" alt="distributed image goes here"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why should you use Dapr?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Are you writing distributed applications?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Are you looking to build resilient, microservice applications and building your own internal mini-frameworks to make this happen?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do you have your services written in multiple programming languages or frameworks?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do you find it difficult to implement state handling, pub/sub messaging, which enable event-driven, resilient architectures?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dapr enables developers using any language or framework to easily write microservices, providing industry best practices to solve distributed systems problems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcloudblogs.microsoft.com%2Fuploads%2Fprod%2F2019%2F10%2FDapr-2-1024x486.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcloudblogs.microsoft.com%2Fuploads%2Fprod%2F2019%2F10%2FDapr-2-1024x486.webp" alt="dapr image goes here"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checkout the git repo. If it fits your need then do not reinvent the wheel.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dapr" rel="noopener noreferrer"&gt;
        dapr
      &lt;/a&gt; / &lt;a href="https://github.com/dapr/dapr" rel="noopener noreferrer"&gt;
        dapr
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/dapr/dapr/img/dapr_logo.svg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fdapr%2Fdapr%2Fimg%2Fdapr_logo.svg" height="120px"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Any language, any framework, anywhere&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://goreportcard.com/report/github.com/dapr/dapr" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e3bd5dd07a291652476491adbed2a38610482837aba00d92d60ac85149795646/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f646170722f64617072" alt="Go Report"&gt;&lt;/a&gt; &lt;a href="https://www.bestpractices.dev/projects/5044" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4fc592dc45eb6918452418a86077806f1f8567c68094015d37149b6a9af37322/68747470733a2f2f7777772e626573747072616374696365732e6465762f70726f6a656374732f353034342f6261646765" alt="OpenSSF"&gt;&lt;/a&gt; &lt;a href="https://hub.docker.com/r/daprio/dapr" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a5053bc1cdeb30a32a64d3d425b068a23dd1b8913dee76d9331d23c1d0070e15/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f64617072696f2f64617072643f7374796c653d666c6174266c6f676f3d646f636b6572" alt="Docker Pulls"&gt;&lt;/a&gt; &lt;a href="https://github.com/dapr/dapr/actions?workflow=dapr" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/dapr/dapr/workflows/dapr/badge.svg?event=push&amp;amp;branch=master" alt="Build Status"&gt;&lt;/a&gt; &lt;a href="https://github.com/dapr/dapr/actions?workflow=dapr-test&amp;amp;event=schedule" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/045032837378b5c2dabe0852638bdf7d9229ecc0647a01aaf11d82e9dbd21c33/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f676973742e67697468756275736572636f6e74656e742e636f6d2f646170722d626f742f31346539373465386664366336656162303361323437356265623164353437612f7261772f646170722d746573742d62616467652e6a736f6e" alt="Test Status"&gt;&lt;/a&gt; &lt;a href="https://codecov.io/gh/dapr/dapr" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d1808ed8ab0c59644bc598b9710fc75632a10f792296f373a9cc95fa47964e3d/68747470733a2f2f636f6465636f762e696f2f67682f646170722f646170722f6272616e63682f6d61737465722f67726170682f62616467652e737667" alt="Code Coverage"&gt;&lt;/a&gt; &lt;a href="https://github.com/dapr/dapr/blob/master/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d043c2d900755641a05ef5137797ce6fac293a3b79ef324bbba687c0fb2b26de/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f646170722f646170723f7374796c653d666c6174266c6162656c3d4c6963656e7365266c6f676f3d676974687562" alt="License: Apache 2.0"&gt;&lt;/a&gt; &lt;a href="https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fdapr%2Fdapr?ref=badge_shield" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3a3db390b58f50fd82f0bf2b63213d85c9815491c98f004c8f42d0d17bac4c0c/68747470733a2f2f6170702e666f7373612e636f6d2f6170692f70726f6a656374732f637573746f6d2532423136322532466769746875622e636f6d25324664617072253246646170722e7376673f747970653d736869656c64" alt="FOSSA Status"&gt;&lt;/a&gt; &lt;a href="https://www.tickgit.com/browse?repo=github.com/dapr/dapr" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8e6ef2c56c49b3b9615a427c70311e08e8ed20c1a5f0fd11612db51fcc1bf35f/68747470733a2f2f62616467656e2e6e65742f68747470732f6170692e7469636b6769742e636f6d2f62616467656e2f6769746875622e636f6d2f646170722f64617072" alt="TODOs"&gt;&lt;/a&gt; &lt;a href="https://github.com/dapr/dapr/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f9c888025cdb11d6a1e98469bbf281c22dce15081b93d43636662b7b0e37d3ea/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d7365617263682f646170722f646170723f71756572793d74797065253341697373756525323069732533416f70656e2532306c6162656c253341253232676f6f6425323066697273742532306973737565253232266c6162656c3d476f6f642532306669727374253230697373756573267374796c653d666c6174266c6f676f3d676974687562" alt="Good First Issues"&gt;&lt;/a&gt; &lt;a href="http://bit.ly/dapr-discord" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/760f64061f67a49072f51272d1259bb6e54d534b35929241fedd465f4844f3ac/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3737383638303231373431373830393933313f6c6162656c3d446973636f7264267374796c653d666c6174266c6f676f3d646973636f7264" alt="discord"&gt;&lt;/a&gt; &lt;a href="https://youtube.com/@daprdev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/310d0ae2027ad9d624b6397faed53eba593ae8a041f33a50a1ba7ec21df2987f/68747470733a2f2f696d672e736869656c64732e696f2f796f75747562652f6368616e6e656c2f76696577732f55437470535139424c425f334558645741555159776e52413f7374796c653d666c6174266c6162656c3d596f75547562652532307669657773266c6f676f3d796f7574756265" alt="YouTube"&gt;&lt;/a&gt; &lt;a href="https://twitter.com/daprdev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cbc7cfbc7befb88690d5e8dad0b3e139ae97e6fe9fdab5ecaf3f8e41e88af6c9/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f646170726465763f6c6f676f3d78267374796c653d666c6174" alt="X/Twitter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.&lt;/p&gt;
&lt;p&gt;Dapr codifies the &lt;em&gt;best practices&lt;/em&gt; for building microservice applications into open, independent, building blocks that enable you to build portable applications with the language and framework of your choice. Each building block is independent and you can use one, some, or all of them in your application.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dapr/dapr./img/overview.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fdapr%2Fdapr.%2Fimg%2Foverview.png" alt="Dapr overview"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We are a Cloud Native Computing Foundation (CNCF) incubation project.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/kedacore/keda/main/images/logo-cncf.svg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fkedacore%2Fkeda%2Fmain%2Fimages%2Flogo-cncf.svg" height="75px"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Goals&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Enable developers using &lt;em&gt;any&lt;/em&gt; language or framework to write distributed applications&lt;/li&gt;
&lt;li&gt;Solve the hard problems developers face building microservice applications by providing best practice building blocks&lt;/li&gt;
&lt;li&gt;Be community driven, open and vendor neutral&lt;/li&gt;
&lt;li&gt;Gain new contributors&lt;/li&gt;
&lt;li&gt;Provide consistency and portability through open APIs&lt;/li&gt;
&lt;li&gt;Be platform agnostic across cloud and edge&lt;/li&gt;
&lt;li&gt;Embrace…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/dapr/dapr" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>dapr</category>
      <category>microservices</category>
      <category>distributedsystems</category>
    </item>
    <item>
      <title>What sort of questions would you ask to 12 years experienced developer</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Thu, 24 Oct 2019 08:19:47 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/what-sort-of-questions-would-you-ask-to-12-years-experienced-developer-1m3h</link>
      <guid>https://dev.to/pareshjoshi/what-sort-of-questions-would-you-ask-to-12-years-experienced-developer-1m3h</guid>
      <description>&lt;p&gt;Very recently I appeared for an interview with a small product development company that builds healthcare software products.&lt;/p&gt;

&lt;p&gt;I was expecting questions based on my experience which is mostly developing back-end systems using .NET and .NET Core. However, interview started with the questions you generally find online via Google (SQL interview questions, ASP.NET interview questions).&lt;/p&gt;

&lt;p&gt;Maybe I was under prepared and I did not get shortlisted for next round. However, I felt that I did not get opportunity to showcase my experience.&lt;/p&gt;

&lt;p&gt;As an interviewer what sort of questions, would you ask to 12+ years experienced candidate?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>Mistake #2 - Too many assumptions</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Sat, 19 Oct 2019 14:01:24 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/mistake-2-too-many-assumptions-486j</link>
      <guid>https://dev.to/pareshjoshi/mistake-2-too-many-assumptions-486j</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oC5kdDO---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/7/7d/Prog.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oC5kdDO---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://upload.wikimedia.org/wikipedia/commons/7/7d/Prog.png" alt="there was an image here" width="465" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Translating the problem statement into working software is not a magic. It is a journey and the very first step is to understand the requirements. Often the details of the problem statement aren't clear and as a developer you start making assumptions and build a working solution. This is a good quality of a software developer; however, things go wrong when you start making too many assumptions.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/AwcKpN5Fqbs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;This is a common mistake I noticed in entry level programmers and one of the reasons I found is they are afraid of asking questions. Maybe they are not comfortable to reach out to their colleagues or they feel their questions are not important. &lt;/p&gt;

&lt;p&gt;If you are just making a start of your career as a software developer, I would like to tell you that your questions are important! While training new members of the team, I deliberately keep some details missing from the assignments. This is to help me understand whether those individuals are coming back with questions. It may be the case that you have too many questions to ask and you are not sure where to start? I suggest ask question with an answer and validate whether your understanding is correct.&lt;/p&gt;

&lt;p&gt;I personally believe asking questions is a way better than making "too many" assumptions.&lt;/p&gt;

&lt;p&gt;What are your thoughts?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There is a small exercise at end of embedded video which you may want to try to test your ability of asking questions.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>mistakes</category>
      <category>developer</category>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Mistake #1 - Code First Approach</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Mon, 30 Sep 2019 13:53:52 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/mistake-1-code-first-approach-1a86</link>
      <guid>https://dev.to/pareshjoshi/mistake-1-code-first-approach-1a86</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“Mistakes are a fact of life. It is the response to error that counts.” - Nikki Giovanni&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/auQqBWs9iKo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Everyone make mistakes and learn from it. However, it is also important to learn from others.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Learn from the mistakes of others. You can’t live long enough to make them all yourself.” - Eleanor Roosevelt&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My journey of becoming professional software developer started in 2007, and I have to admit that I have made mistakes throughout my career progression. A good thing is that I learnt from those errors. This series of posts is to highlight these mistakes as well as some of my observations when training fresh graduates. I hope this will help beginner and intermediate level developers, who are making their mark into the industry, to avoid repeating these mistakes.&lt;/p&gt;

&lt;p&gt;The very first mistake that I am going to talk about is, Mistake #1 Code First Approach.&lt;/p&gt;

&lt;p&gt;Programming is the process that takes an algorithm and put it into code that computer can understand and execute. We make use of programming languages to make this happen. In the growing world of technology inventions, you can literally automate any manual process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gaGLqv6K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.pexels.com/photos/957424/pexels-photo-957424.jpeg%3Fcs%3Dsrgb%26dl%3Dmacbook-pro-programmer-programming-957424.jpg%26fm%3Djpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gaGLqv6K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.pexels.com/photos/957424/pexels-photo-957424.jpeg%3Fcs%3Dsrgb%26dl%3Dmacbook-pro-programmer-programming-957424.jpg%26fm%3Djpg" alt="oops! where is my image?" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A common mistake that I observed in an entry level programmer is that they don't work through the problem statement manually. This problem statement could be a programming assignment, developing a software application from scratch or adding a new feature to an existing software product. It is important that before you jump into coding, you need to make sure that you understand the requirements.&lt;/p&gt;

&lt;p&gt;what sort of input will be required?&lt;br&gt;
what is the expected outcome?&lt;br&gt;
what will be the execution workflow? &lt;/p&gt;

&lt;p&gt;There are dozens of other questions that should pop up in your mind. The very first step is to read and understand the problem statement and ask these questions to yourself, try figuring out answers to these.&lt;/p&gt;

&lt;p&gt;You may get to the solution by simply jumping into the code, but remember it may take more iterations to the final solution. Using the right language construct is important, but it is more important that you have understood what you need to implement.&lt;/p&gt;

&lt;p&gt;Looking forward to hear your observations on this topic.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learning by making mistakes and not duplicating them is what life is about.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Keep learning!&lt;/p&gt;

</description>
      <category>mistakes</category>
      <category>developer</category>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>For vs Foreach</title>
      <dc:creator>Paresh</dc:creator>
      <pubDate>Fri, 27 Sep 2019 06:14:20 +0000</pubDate>
      <link>https://dev.to/pareshjoshi/for-vs-foreach-1m77</link>
      <guid>https://dev.to/pareshjoshi/for-vs-foreach-1m77</guid>
      <description>&lt;p&gt;You may think this is a superfluous post as there are already many posts out there on web discussing about performance measures when using For or Foreach. Some of them are:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://madprops.org/blog/for-vs-foreach-performance/"&gt;For vs Foreach Performance.&lt;/a&gt;&lt;br&gt;
&lt;a href="http://stackoverflow.com/questions/365615/in-net-which-loop-runs-faster-for-or-foreach"&gt;Which loop is faster for or foreach.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and many &lt;a href="https://mdfarragher.com/2017/11/22/for-versus-foreach-in-csharp/"&gt;more…&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (int i = 0; i &amp;lt; collection.Count; ++i)
{
    // Work on a collection[i].
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;foreach (var item in collection)
{
    // Work on an item.
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;By looking at title of the post, if you think I’m going to get into same debate here, then wait! I’ve something else to say. It’s still for vs foreach. However, rather than comparing inherent performance of for vs foreach, I’m going to discuss how things could go wrong when a programmer incorrectly uses language construct for the given context.&lt;/p&gt;

&lt;p&gt;Recently I’ve been reviewing a piece code doing some complex work on a collection:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;foreach (var element in collection)
{
    int firstIndex = collection.IndexOf(element);
    int secondIndex = 0;
    foreach (var anotherElement in collection)
    {
        if (secondIndex &amp;gt; firstIndex)
        {
            // Use element and anotherElement for some operation.
        }

        ++secondIndex;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You’re a reviewer of this code – now without reading this article further, check what’s wrong with this code snippet.&lt;/p&gt;

&lt;p&gt;I was just wondering what is this code doing for a while. At first, only optimization I could think of was to avoid executing ++secondIndex once secondIndex &amp;gt; firstIndexexpression is true i.e. secondIndex will always be larger for subsequent iterations. Just after few seconds I said, ah – this is wrong! horrible code. There is another hidden loop here which is nothing but a call to IndexOf. It is a linear search over the collection and time complexity of the algorithm is O(n). Using for loop here will be much faster and much more readable.&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (int i = 0; i &amp;lt; collection.Count; ++i)&lt;br&gt;
{&lt;br&gt;
    for (int j = i + 1; j &amp;lt; collection.Count; ++j)&lt;br&gt;
    {&lt;br&gt;
        // Use collection[i] and collection[j] here for some operation.&lt;br&gt;
    }&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Conclusion&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;Never use foreach when you really need to use for. That is if you need to access indexes of the collection always use for.&lt;/p&gt;

</description>
      <category>for</category>
      <category>foreach</category>
      <category>performance</category>
      <category>codequality</category>
    </item>
  </channel>
</rss>
