{"id":53979,"date":"2010-12-24T15:39:51","date_gmt":"2010-12-24T12:39:51","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=53979"},"modified":"2023-05-06T03:47:55","modified_gmt":"2023-05-06T00:47:55","slug":"ruby-vs-python-meetup","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/","title":{"rendered":"The Ruby vs. Python Meetup"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#The_holy_war\" >The holy war<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#So_why_is_Ruby_a_brilliantly_designed_language\" >So, why is Ruby a brilliantly designed language?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#Revealed_pros_and_cons\" >Revealed pros and cons<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"The_holy_war\"><\/span>The holy war<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>I never understood developers and customers that willingly choose Python over Ruby. Ruby does feel like a native language to me, while everything else doesn&#8217;t. No, this doesn\u2019t mean that I don\u2019t like working with other technologies. Over the last year and a half, I was really inspired by my positive experience of using Erlang and JavaScript, while working on the Membase project (where Python is widely utilized). I really enjoyed doing my work, so it\u2019s obviously possible to have fun with languages that are less well-designed than Ruby.<\/p>\n<p>However, I always wanted to understand why this happens. Why do people implement other languages than Ruby so often? That is why I was excited to accept the invitation to the \u201cRuby vs. Python\u201d meetup that was sponsored by our company. I chose the topic \u201cWhy Ruby Is a Brilliantly Designed Language\u201d and wanted to summarize what makes Ruby different.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2010\/12\/ruby-vs-python-featured-image.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2010\/12\/ruby-vs-python-featured-image.png\" width=\"640\" height=\"360\" class=\"aligncenter size-full wp-image-53990\" \/><\/a><\/center><\/p>\n<p>The event was very dynamic and intriguing. The speakers and attendees were split into two groups: one defended Python, while another fought for Ruby. Each group prepared presentations describing the history, community, main concepts, development features, and perspectives of their language of choice.<\/p>\n<p>I was part of the group that presented Ruby. It was my first public speech in many years. My previous presentation\u2014the defense of the diploma\u2014was a big failure. I&#8217;m glad that this time I\u2019ve learned some lessons and wasn&#8217;t so bad. \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"So_why_is_Ruby_a_brilliantly_designed_language\"><\/span>So, why is Ruby a brilliantly designed language?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>With hindsight, it is obvious that I picked up a very hard topic. Squeezing my experience into a 15-minute speech was really tricky. While preparing for the session, I reinforced my belief that Ruby is the best-designed programming language I&#8217;ve ever used. However, when it was just one day left before the meetup, I realized that I could bring in only the most essential arguments to prove that.<\/p>\n<ol>\n<li style=\"margin-bottom: 6px;\">My first pro-Ruby argument was that, from the moment the language was created, there were no missing features to add and no design bugs to fix. With over 10 years of its history, Ruby remained\u2014mostly\u2014stable with only minor syntactic features added\/tweaked.<\/li>\n<li style=\"margin-bottom: 6px;\">Second, Ruby represents all powerful <a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming\" rel=\"noopener\" target=\"_blank\">object-oriented programming<\/a> (OOP) features, which it adopted from Smalltalk. It is a &#8220;pure&#8221; OOP language, where everything is an object. The pureness, open classes, <code style=\"color: black; background-color: #e6e6e6;\">method_missing<\/code>, and other OOP features provide for a huge semantic power. Surprisingly, nothing game-changing was introduced to the programming language design over the last 30 years.<\/li>\n<li style=\"margin-bottom: 6px;\">After that, I talked about what powerful features Ruby adds on top of the traditional form of OOP. For instance, mix-ins\u2014a powerful alternative to multiple inheritance\u2014is a great invention. During the presentation, I demonstrated how it makes functional programming even more natural than in LISP. Another remarkable Ruby feature worth mentioning was the ability to extend individual objects. It really makes defining \u201cstatic\u201d methods natural and can be useful in some other cases.<\/li>\n<li>I concluded with touching upon Ruby\u2019s concise syntax. As a part of this argument, I demonstrated Ruby\u2019s syntactical killer-feature, blocks.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Revealed_pros_and_cons\"><\/span>Revealed pros and cons<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>There were some other nice discussions in between the speeches. For example, the Python group argued that its language is more widely used. However, I noted that one could resort to such argument only because of the lack of other worthy pro-language arguments.<\/p>\n<p>Another controversial point was that Python is good for education and is adopted by Massachusetts Institute of Technology as the primary programming language for students. I objected that Python is not the best language to start with. I think it is wiser to begin developing your programming skills with a pure OOP language, such as Ruby, because it can build a better solid ground for object-oriented design and way of thinking.<\/p>\n<p>The discussion ended up with the confessions from both sides about what sucks in their languages of choice. Python 2.6\/3 incompatibility was the biggest issue that Pythonistas admitted. Ruby developers noted the lack of speed, the lack of support for real concurrency, and cumbersome multiple encodings support in Ruby 1.9. The first two negative points were well understood by Pythonistas, since they suffer from them, as well. Ruby&#8217;s incompatibility of 1.9 vs. 1.8 was also mentioned, though nobody said that the difference between these versions is far less than the difference between Python 2.6 and Python 3.<\/p>\n<p>I really enjoyed attending this event and delivering a presentation there. However, it seems like everyone\u2014including me\u2014forgot to mention that it is hard work of human beings and their attention to detail that mostly contributes to an end result. I think that as long as the technology doesn&#8217;t actively interfere with the programmer&#8217;s job, it affects the end result very slightly. The language is merely the tool, while the developer is the master.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/ruby-on-rails-course-at-altoros-graduation\/\">RubyGardens Graduation: Our Ruby Team Welcomes New Engineers<\/a>\n<\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/the-ruby-community-is-blooming-more-than-100-ruby-experts-attended-the-local-ruby-on-rails-user-group\/\">The Ruby Community Is Blooming: 100+ Experts Attended a Local User Group<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/a-gaming-bots-constest-at-a-ror-meetup\/\">A Gaming Bots Constest at a RoR Meetup<\/a><\/li>\n<\/ul>\n<hr\/>\n<p><center><small>This blog post was written by <a href=\"https:\/\/github.com\/alk\">Aliaksei Kandratsenka<\/a>, Senior Ruby Developer at Altoros.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The holy war<\/p>\n<p>I never understood developers and customers that willingly choose Python over Ruby. Ruby does feel like a native language to me, while everything else doesn&#8217;t. No, this doesn\u2019t mean that I don\u2019t like working with other technologies. Over the last year and a half, I was really inspired [&#8230;]<\/p>\n","protected":false},"author":5,"featured_media":54007,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[7],"tags":[895],"class_list":["post-53979","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-opinion","tag-research-and-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Ruby vs. Python Meetup | Altoros<\/title>\n<meta name=\"description\" content=\"Our senior Ruby engineer shares his experience after participating in a recent event, where experts compared two popular languages from different angles.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Ruby vs. Python Meetup | Altoros\" \/>\n<meta property=\"og:description\" content=\"The holy war I never understood developers and customers that willingly choose Python over Ruby. Ruby does feel like a native language to me, while everything else doesn&#8217;t. No, this doesn\u2019t mean that I don\u2019t like working with other technologies. Over the last year and a half, I was really inspired [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-24T12:39:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-06T00:47:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2010\/12\/ruby-python-meetup-altoros.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"420\" \/>\n\t<meta property=\"og:image:height\" content=\"281\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alex Khizhniak\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alex Khizhniak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/\"},\"author\":{\"name\":\"Alex Khizhniak\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/3d914db6ad1b2908c32c0dc5dcabc420\"},\"headline\":\"The Ruby vs. Python Meetup\",\"datePublished\":\"2010-12-24T12:39:51+00:00\",\"dateModified\":\"2023-05-06T00:47:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/\"},\"wordCount\":852,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/ruby-python-meetup-altoros.jpg\",\"keywords\":[\"Research and Development\"],\"articleSection\":[\"News\\\/Opinion\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/\",\"name\":\"The Ruby vs. Python Meetup | Altoros\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/ruby-python-meetup-altoros.jpg\",\"datePublished\":\"2010-12-24T12:39:51+00:00\",\"dateModified\":\"2023-05-06T00:47:55+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/3d914db6ad1b2908c32c0dc5dcabc420\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/ruby-python-meetup-altoros.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/12\\\/ruby-python-meetup-altoros.jpg\",\"width\":420,\"height\":281},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ruby-vs-python-meetup\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Ruby vs. Python Meetup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/3d914db6ad1b2908c32c0dc5dcabc420\",\"name\":\"Alex Khizhniak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/druzya-edit1-150x150.jpg\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/druzya-edit1-150x150.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/druzya-edit1-150x150.jpg\",\"caption\":\"Alex Khizhniak\"},\"description\":\"Alex Khizhniak is Director of Technical Content Strategy at Altoros and a cofounder of a local Java User Group. Managing distributed teams since 2004, he has gained experience as a journalist, an editor-in-chief, a technical writer, a technology evangelist, a project manager, and a product owner. Alex is obsessed with AI\\\/ML, data science, data integration, ETL\\\/DWH, data quality, databases (SQL\\\/NoSQL), big data, IoT, and BI. The articles and industry reports he created or helped to publish reached out to 3,000,000+ tech-savvy readers. Some of the pieces were covered on TechRepublic, ebizQ, NetworkWorld, CIO.com, etc. Find him on Twitter at @alxkh.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/alxkh\"],\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/author\\\/alex\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Ruby vs. Python Meetup | Altoros","description":"Our senior Ruby engineer shares his experience after participating in a recent event, where experts compared two popular languages from different angles.","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:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/","og_locale":"en_US","og_type":"article","og_title":"The Ruby vs. Python Meetup | Altoros","og_description":"The holy war I never understood developers and customers that willingly choose Python over Ruby. Ruby does feel like a native language to me, while everything else doesn&#8217;t. No, this doesn\u2019t mean that I don\u2019t like working with other technologies. Over the last year and a half, I was really inspired [...]","og_url":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/","og_site_name":"Altoros","article_published_time":"2010-12-24T12:39:51+00:00","article_modified_time":"2023-05-06T00:47:55+00:00","og_image":[{"width":420,"height":281,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2010\/12\/ruby-python-meetup-altoros.jpg","type":"image\/jpeg"}],"author":"Alex Khizhniak","twitter_misc":{"Written by":"Alex Khizhniak","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#article","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/"},"author":{"name":"Alex Khizhniak","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420"},"headline":"The Ruby vs. Python Meetup","datePublished":"2010-12-24T12:39:51+00:00","dateModified":"2023-05-06T00:47:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/"},"wordCount":852,"commentCount":0,"image":{"@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2010\/12\/ruby-python-meetup-altoros.jpg","keywords":["Research and Development"],"articleSection":["News\/Opinion"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/","url":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/","name":"The Ruby vs. Python Meetup | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2010\/12\/ruby-python-meetup-altoros.jpg","datePublished":"2010-12-24T12:39:51+00:00","dateModified":"2023-05-06T00:47:55+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2010\/12\/ruby-python-meetup-altoros.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2010\/12\/ruby-python-meetup-altoros.jpg","width":420,"height":281},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/ruby-vs-python-meetup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"The Ruby vs. Python Meetup"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420","name":"Alex Khizhniak","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg","caption":"Alex Khizhniak"},"description":"Alex Khizhniak is Director of Technical Content Strategy at Altoros and a cofounder of a local Java User Group. Managing distributed teams since 2004, he has gained experience as a journalist, an editor-in-chief, a technical writer, a technology evangelist, a project manager, and a product owner. Alex is obsessed with AI\/ML, data science, data integration, ETL\/DWH, data quality, databases (SQL\/NoSQL), big data, IoT, and BI. The articles and industry reports he created or helped to publish reached out to 3,000,000+ tech-savvy readers. Some of the pieces were covered on TechRepublic, ebizQ, NetworkWorld, CIO.com, etc. Find him on Twitter at @alxkh.","sameAs":["https:\/\/x.com\/https:\/\/twitter.com\/alxkh"],"url":"https:\/\/www.altoros.com\/blog\/author\/alex\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/53979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=53979"}],"version-history":[{"count":45,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/53979\/revisions"}],"predecessor-version":[{"id":67454,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/53979\/revisions\/67454"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/54007"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=53979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=53979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=53979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}