{"id":113,"date":"2020-12-20T07:05:43","date_gmt":"2020-12-20T07:05:43","guid":{"rendered":"https:\/\/manishshrivastava.com\/blog\/?p=113"},"modified":"2020-12-20T07:29:47","modified_gmt":"2020-12-20T07:29:47","slug":"write-awesome-code-ruby-on-rails","status":"publish","type":"post","link":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/","title":{"rendered":"How to Write Awesome code &#8211; Ruby on Rails &#8211; V1"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Everyone wish to write the better code,  But How, Is there any pattern \/ behaviour? Can anyone point to your code what can be improved?<\/h2>\n\n\n\n<p><strong>The answer is YES<\/strong>, There is pattern you should follow the <a href=\"https:\/\/www.tutorialspoint.com\/ruby\/ruby_object_oriented.htm\">OOPS<\/a> way by it&#8217;s core. I have written <a href=\"https:\/\/manishshrivastava.com\/blog\/solid-principle-in-rails\/\">SOLID principle<\/a> before this, Please check this too. I am going to write more series in this topic as it&#8217;s really interesting and helpful to everyone.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-25-49.png\" alt=\"focus on one thing\" class=\"wp-image-123\" width=\"668\" height=\"442\" srcset=\"https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-25-49.png 872w, https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-25-49-300x199.png 300w, https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-25-49-768x508.png 768w\" sizes=\"(max-width: 668px) 100vw, 668px\" \/><figcaption>Focus on one thing in a Class<\/figcaption><\/figure>\n\n\n\n<p>In Ruby it&#8217;s damn easy but we don&#8217;t understand what mistake we are doing, so chances of improvement is less. So, Let&#8217;s take an example of below <em>MyClass<\/em> in code1 as below.<\/p>\n\n\n\n<p>Code1:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">class MyClass\n  attr_reader :input\n  \n  def initialize(input)\n    @input = input\n  end\n\n  def double\n    case input\n      when Numeric  then target . 2 \n      when String   then target.next    # lazy fail ex\n      when Array    then target.collect {|o| MyClass.new(o).double}\n      else\n        raise \u201cdon\u2019t know how to double #{input.class} #{input.inspect}\u201d\n    end\n  end\nend<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>The result of the code1 is Output1 as below:<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">>> MyClass.new(\u2018aaa\u2019).double\n=> \"aab\"\n>> MyClass.new(49).double\n=> 98\n>> MyClass.new([\u2018b\u2019, 6]).double\n=> [\"c\", 12]\n>> MyClass.new({\u2018x\u2019=>\u2018y\u2019}).double\nRuntimeError: don\u2019t know how to double Hash {\"x\"=>\"y\"}\n        from (irb):73:in `double'\n        from (irb):80\n        from :0<\/code><\/pre>\n\n\n\n<p>The above code looks Good, Right ?<\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_219\">You\u2019re probably used \/ gone thought with this pattern. and, Its everywhere in Ruby on Rails.<\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_219\">But, This style of code is Absolutely Wrong and that you should do a different thing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"yui_3_17_2_1_1608444617402_244\"><strong>Why is the problem in above code?<\/strong><\/h3>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_240\">If I change how&nbsp;<code>double<\/code>&nbsp;works on any of these classes,&nbsp;<code>MyClass<\/code>&nbsp;must change, but that\u2019s not the real problem. What happens if&nbsp;<code>MyClass<\/code>&nbsp;wants to double some new kind of object? I have to go into&nbsp;<code>MyClass<\/code>&nbsp;and add a new branch to the case statement. How annoying is that?<\/p>\n\n\n\n<p>But that\u2019s the least of it. If I\u2019m writing code that follows this pattern, I likely have many classes that do stuff based on the classes of their collaborators. My entire application behaves this way. Every time I add a new collaborating object I have to go change code everywhere. Each subsequent change makes things worse. My application is a teetering house of cards and eventually it will come tumbling down.<\/p>\n\n\n\n<p>Also, what if some other wishes to use&nbsp;<code>MyClass<\/code>&nbsp;with their new&nbsp;<code>SuperDuperClass<\/code>&nbsp;object? They can\u2019t reuse&nbsp;<code>MyClass<\/code>&nbsp;without changing it since&nbsp;<code>MyClass<\/code>&nbsp;has a very limited notion of what kinds of objects can be doubled.<\/p>\n\n\n\n<p><code>MyClass<\/code>&nbsp;is both rigid and closed for extension.<\/p>\n\n\n\n<p><em>Code2<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">class Numeric\n  def double\n    self * 2\n  end\nend\n\nclass String\n  def double\n    self.next \n  end\nend\n\nclass Array\n  def double\n    collect {|e| e.double}\n  end\nend\n\nclass Object\n  def double\n    raise \"don't know how to double #{self.class} #{self.inspect}\"\n  end\nend\n\nclass MyClass\n  attr_reader :input\n  \n  def initialize(input)\n    @input = input\n  end\n\n  def double\n    input.double\n  end\nend<\/code><\/pre>\n\n\n\n<p>What basically it should be as below (Something like this) :<\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_259\">Using this new code, Output1 will be the same as before, but now we can also use this way as output2:<\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_262\"><em>Output2:<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">>> 'aaa'.double\n=> \"aab\"\n>> 49.double\n=> 98\n>> ['b', 6].double\n=> [\"c\", 12]<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_266\">In this above code2, <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"yui_3_17_2_1_1608444617402_266\"><strong>The Objects are what they are and because of that, they actually behave the way they do.<\/strong><\/h3>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_270\">Above statement is very simple but <strong>incredibly important<\/strong>. <\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_272\">They tell each other&nbsp;<strong>what<\/strong>, not&nbsp;<strong>how<\/strong>.<\/p>\n\n\n\n<p><strong>What<\/strong>&nbsp;is the event\/notification\/request and it is the responsibility of the sender.(sender should know).<\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_274\"><strong>How<\/strong>&nbsp;is the behaviour\/implementation and it should be completely hidden in the receiver (sender not required to know).<\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1608444617402_295\"><strong>Therefore<\/strong>:<\/p>\n\n\n\n<ul id=\"yui_3_17_2_1_1608444617402_299\"><li><code>MyClass<\/code>&nbsp;should not know how&nbsp;<code>Numeric<\/code>&nbsp;implements&nbsp;<code>double<\/code>.<\/li><li><code>MyClass<\/code>&nbsp;should just ask target to double itself.<\/li><li>All possible targets must implement&nbsp;<code>double<\/code>.<\/li><li>Object should implement&nbsp;<code>double<\/code>&nbsp;to help you get your Ducks in a row.<\/li><\/ul>\n\n\n\n<p>Thanks for reading. For more information I highly recommend to read <a href=\"https:\/\/sandimetz.com\/99bottles\">Sandi Metz books.<\/a><\/p>\n\n\n\n<p>Courtesy <a href=\"https:\/\/sandimetz.com\/99bottles\">99 Bottles of OOP<\/a> by <a href=\"https:\/\/sandimetz.com\/99bottles\">Sandi Metz<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"361\" height=\"496\" src=\"https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-31-16.png\" alt=\"Sandi metz\" class=\"wp-image-125\" srcset=\"https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-31-16.png 361w, https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-31-16-218x300.png 218w\" sizes=\"(max-width: 361px) 100vw, 361px\" \/><\/figure>\n\n\n\n<p>Happy Learning &amp; Coding!<\/p>\n\n\n\n<p>Note: This concept can be used with any programming language.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Everyone wish to write the better code, But How, Is there any pattern \/ behaviour? Can anyone point to your code what can be improved? The answer is YES, There is pattern you should follow the OOPS way by it&#8217;s core. I have written SOLID principle before this, Please check this too. I am going &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How to Write Awesome code &#8211; Ruby on Rails &#8211; V1&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[31,33,23],"tags":[36,35,34,26,37],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Write Awesome code - Ruby on Rails - V1 - Manish Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Write Awesome code - Ruby on Rails - V1 - Manish Blog\" \/>\n<meta property=\"og:description\" content=\"Everyone wish to write the better code, But How, Is there any pattern \/ behaviour? Can anyone point to your code what can be improved? The answer is YES, There is pattern you should follow the OOPS way by it&#8217;s core. I have written SOLID principle before this, Please check this too. I am going &hellip; Continue reading &quot;How to Write Awesome code &#8211; Ruby on Rails &#8211; V1&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/\" \/>\n<meta property=\"og:site_name\" content=\"Manish Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-20T07:05:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-20T07:29:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-25-49.png\" \/>\n<meta name=\"author\" content=\"manishshrivastava\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"manishshrivastava\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/\"},\"author\":{\"name\":\"manishshrivastava\",\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/e4d02d0fe4a05267401de130fac850f0\"},\"headline\":\"How to Write Awesome code &#8211; Ruby on Rails &#8211; V1\",\"datePublished\":\"2020-12-20T07:05:43+00:00\",\"dateModified\":\"2020-12-20T07:29:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/\"},\"wordCount\":534,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/19d0df1c38b86606412b5c821e67e67e\"},\"keywords\":[\"coding\",\"logic\",\"OOps\",\"programming in ruby\",\"sandi metz\"],\"articleSection\":[\"concept\",\"OOPS\",\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/\",\"url\":\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/\",\"name\":\"How to Write Awesome code - Ruby on Rails - V1 - Manish Blog\",\"isPartOf\":{\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#website\"},\"datePublished\":\"2020-12-20T07:05:43+00:00\",\"dateModified\":\"2020-12-20T07:29:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/manishshrivastava.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programming\",\"item\":\"https:\/\/manishshrivastava.com\/blog\/category\/programming\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Write Awesome code &#8211; Ruby on Rails &#8211; V1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#website\",\"url\":\"https:\/\/manishshrivastava.com\/blog\/\",\"name\":\"Manish Blog\",\"description\":\"Rubyist, Realist, Pragmatist, and Believer\",\"publisher\":{\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/19d0df1c38b86606412b5c821e67e67e\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/manishshrivastava.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/19d0df1c38b86606412b5c821e67e67e\",\"name\":\"manish shrivastava\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d35275f95d1cd3202c89c1693336453?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d35275f95d1cd3202c89c1693336453?s=96&d=mm&r=g\",\"caption\":\"manish shrivastava\"},\"logo\":{\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/99interview.com\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/e4d02d0fe4a05267401de130fac850f0\",\"name\":\"manishshrivastava\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ba8ddd15351cbf6b58b3d8e16ce94b3b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ba8ddd15351cbf6b58b3d8e16ce94b3b?s=96&d=mm&r=g\",\"caption\":\"manishshrivastava\"},\"description\":\"Holds 15+ years of experience as a Software Development Expert. His vision is to share knowledge related to How Software can add value to anyone's life. Manish is a Software Developer and Open source contributor. He is an experienced developer with 15+ years of experience in creating awesome web and app projects based on specific requirements using Ruby, React, and sometimes python. He says, He is a Rubyist, Realist, Pragmatist, and Believer.\",\"sameAs\":[\"https:\/\/manishshrivastava.com\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Write Awesome code - Ruby on Rails - V1 - Manish Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/","og_locale":"en_US","og_type":"article","og_title":"How to Write Awesome code - Ruby on Rails - V1 - Manish Blog","og_description":"Everyone wish to write the better code, But How, Is there any pattern \/ behaviour? Can anyone point to your code what can be improved? The answer is YES, There is pattern you should follow the OOPS way by it&#8217;s core. I have written SOLID principle before this, Please check this too. I am going &hellip; Continue reading \"How to Write Awesome code &#8211; Ruby on Rails &#8211; V1\"","og_url":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/","og_site_name":"Manish Blog","article_published_time":"2020-12-20T07:05:43+00:00","article_modified_time":"2020-12-20T07:29:47+00:00","og_image":[{"url":"https:\/\/manishshrivastava.com\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2020-12-20-12-25-49.png"}],"author":"manishshrivastava","twitter_card":"summary_large_image","twitter_misc":{"Written by":"manishshrivastava","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/#article","isPartOf":{"@id":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/"},"author":{"name":"manishshrivastava","@id":"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/e4d02d0fe4a05267401de130fac850f0"},"headline":"How to Write Awesome code &#8211; Ruby on Rails &#8211; V1","datePublished":"2020-12-20T07:05:43+00:00","dateModified":"2020-12-20T07:29:47+00:00","mainEntityOfPage":{"@id":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/"},"wordCount":534,"commentCount":0,"publisher":{"@id":"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/19d0df1c38b86606412b5c821e67e67e"},"keywords":["coding","logic","OOps","programming in ruby","sandi metz"],"articleSection":["concept","OOPS","Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/","url":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/","name":"How to Write Awesome code - Ruby on Rails - V1 - Manish Blog","isPartOf":{"@id":"https:\/\/manishshrivastava.com\/blog\/#website"},"datePublished":"2020-12-20T07:05:43+00:00","dateModified":"2020-12-20T07:29:47+00:00","breadcrumb":{"@id":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/manishshrivastava.com\/blog\/write-awesome-code-ruby-on-rails\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/manishshrivastava.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Programming","item":"https:\/\/manishshrivastava.com\/blog\/category\/programming\/"},{"@type":"ListItem","position":3,"name":"How to Write Awesome code &#8211; Ruby on Rails &#8211; V1"}]},{"@type":"WebSite","@id":"https:\/\/manishshrivastava.com\/blog\/#website","url":"https:\/\/manishshrivastava.com\/blog\/","name":"Manish Blog","description":"Rubyist, Realist, Pragmatist, and Believer","publisher":{"@id":"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/19d0df1c38b86606412b5c821e67e67e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/manishshrivastava.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/19d0df1c38b86606412b5c821e67e67e","name":"manish shrivastava","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d35275f95d1cd3202c89c1693336453?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d35275f95d1cd3202c89c1693336453?s=96&d=mm&r=g","caption":"manish shrivastava"},"logo":{"@id":"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/99interview.com"]},{"@type":"Person","@id":"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/e4d02d0fe4a05267401de130fac850f0","name":"manishshrivastava","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/manishshrivastava.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ba8ddd15351cbf6b58b3d8e16ce94b3b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ba8ddd15351cbf6b58b3d8e16ce94b3b?s=96&d=mm&r=g","caption":"manishshrivastava"},"description":"Holds 15+ years of experience as a Software Development Expert. His vision is to share knowledge related to How Software can add value to anyone's life. Manish is a Software Developer and Open source contributor. He is an experienced developer with 15+ years of experience in creating awesome web and app projects based on specific requirements using Ruby, React, and sometimes python. He says, He is a Rubyist, Realist, Pragmatist, and Believer.","sameAs":["https:\/\/manishshrivastava.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/posts\/113"}],"collection":[{"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/comments?post=113"}],"version-history":[{"count":14,"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/posts\/113\/revisions"}],"predecessor-version":[{"id":132,"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/posts\/113\/revisions\/132"}],"wp:attachment":[{"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/media?parent=113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/categories?post=113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manishshrivastava.com\/blog\/wp-json\/wp\/v2\/tags?post=113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}