{"id":226,"date":"2013-04-25T09:35:28","date_gmt":"2013-04-25T14:35:28","guid":{"rendered":"http:\/\/www.jsylvest.com\/blog\/?p=226"},"modified":"2013-04-26T12:31:32","modified_gmt":"2013-04-26T17:31:32","slug":"ruby","status":"publish","type":"post","link":"https:\/\/www.jsylvest.com\/blog\/2013\/04\/ruby\/","title":{"rendered":"Ruby"},"content":{"rendered":"<blockquote><p><a href=\"http:\/\/www.codinghorror.com\/blog\/2013\/03\/why-ruby.html\">Coding Horror :: Jeff Atwood :: Why Ruby?<\/a><\/p>\n<p>I've always been a little intrigued by Ruby, mostly because of <a href=\"https:\/\/sites.google.com\/site\/steveyegge2\/tour-de-babel\">the absolutely gushing praise Steve Yegge had for the language way back in 2006<\/a>. I've never forgotten this.<\/p>\n<blockquote><p>For the most part, Ruby took Perl's string processing and Unix integration as-is, meaning the syntax is identical, and so right there, before anything else happens, you already have the Best of Perl. And that's a great start, especially if you don't take the Rest of Perl. But then Matz took the best of list processing from Lisp, and the best of OO from Smalltalk and other languages, and the best of iterators from CLU, and pretty much the best of everything from everyone.<\/p><\/blockquote>\n<\/blockquote>\n<p>Amen. My Ruby still isn't as idiomatic as I would like it to be, but even with my intermediate level I'm so pleased how it gets out of the way lets me do what I want no matter what paradigm I'm thinking in at the time.<\/p>\n<p>Atwood has this to say himself, which also gets my thumbs-up:<\/p>\n<blockquote><p>Ruby <em>isn't cool any more<\/em>. Yeah, you heard me. It's not cool to write Ruby code any more. All the cool people moved on to slinging Scala and Node.js years ago. Our project isn't cool, it's just a bunch of boring old Ruby code. Personally, I'm <em>thrilled<\/em> that Ruby is now mature enough that the community no longer needs to bother with the pretense of being the coolest kid on the block. That means the rest of us who just like to Get Shit Done can roll up our sleeves and focus on the mission of building stuff with our peers rather than frantically running around trying to <a href=\"http:\/\/www.codinghorror.com\/blog\/2008\/01\/the-magpie-developer.html\">suss out the next shiny thing<\/a>.<\/p><\/blockquote>\n<p>I suppose it's in the nature of craftsmen to get a bit giddy about their gear, but at a certain point enough is enough. (This lead to some frustration when I was learning photography a couple of years ago; photography\u00a0amateurs\u00a0seem especially prone to gear obsession.) Yeah, definitely choose the right tool for the job, but don't forget the point is the job, not the tool.<\/p>\n<p>I've endured far too many conversations in the break room, and at barbecues, and at happy hour about the supremacy of various languages.<\/p>\n<p>I don't care which languages people are going to be drooling over at SIGPLAN this year.<\/p>\n<p>I don't care what static analysis theorems you can prove using which language.<\/p>\n<p>I don't care how cool your tools are.<\/p>\n<p><em>I care how cool your results are.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coding Horror :: Jeff Atwood :: Why Ruby? I've always been a little intrigued by Ruby, mostly because of the absolutely gushing praise Steve Yegge had for the language way back in 2006. I've never forgotten this. For the most &hellip; <a href=\"https:\/\/www.jsylvest.com\/blog\/2013\/04\/ruby\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[10],"tags":[],"class_list":["post-226","post","type-post","status-publish","format-standard","hentry","category-cs","wpautop"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/s3sddF-ruby","jetpack-related-posts":[{"id":184,"url":"https:\/\/www.jsylvest.com\/blog\/2013\/04\/conways-game-of-life-in-apl\/","url_meta":{"origin":226,"position":0},"title":"Conway's Game Of Life in APL","author":"jsylvest","date":"16 April 2013","format":false,"excerpt":"APL is the sort of thing I imagine \"Programmer-at-Arms\" Pham Nuwen used in Vernor Vinge's \"Zones of Thought\" books. It seems both incomprehensibly magical while also impeccably rational, forming the shortest bridge between what the programmer is thinking and what the computer is calculating. Of course it also seems like\u2026","rel":"","context":"In &quot;CS \/ Science \/ Tech \/ Coding&quot;","block_context":{"text":"CS \/ Science \/ Tech \/ Coding","link":"https:\/\/www.jsylvest.com\/blog\/category\/cs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":885,"url":"https:\/\/www.jsylvest.com\/blog\/2014\/01\/latitude-longitude-distance\/","url_meta":{"origin":226,"position":1},"title":"Latitude-Longitude Distance","author":"jsylvest","date":"20 January 2014","format":false,"excerpt":"Updated: I noticed a floating point error when using this that I discuss correcting at the end of this post. I thought I would post some of the bite-sized coding pieces I've done recently. To lead off, here's\u00a0Ruby function to find the distance between two points given their latitude and\u2026","rel":"","context":"In &quot;CS \/ Science \/ Tech \/ Coding&quot;","block_context":{"text":"CS \/ Science \/ Tech \/ Coding","link":"https:\/\/www.jsylvest.com\/blog\/category\/cs\/"},"img":{"alt_text":"Protip: You can win every exchange just by being one level more precise than whoever talked last. Eventually, you'll defeat all conversational opponents and stand alone.","src":"https:\/\/i1.wp.com\/imgs.xkcd.com\/comics\/actually.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":403,"url":"https:\/\/www.jsylvest.com\/blog\/2013\/05\/pi\/","url_meta":{"origin":226,"position":2},"title":"Pi","author":"jsylvest","date":"9 May 2013","format":false,"excerpt":"The Economist :: Babbage Blog :: Humble Pi The Raspberry Pi is the brainchild of a couple of computer scientists at Cambridge University. Back in 2006, they lamented the decline in programming skills among applicants for computer-science courses. ... Over the past ten years, computer-science students have gone from arriving\u2026","rel":"","context":"In &quot;CS \/ Science \/ Tech \/ Coding&quot;","block_context":{"text":"CS \/ Science \/ Tech \/ Coding","link":"https:\/\/www.jsylvest.com\/blog\/category\/cs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":95,"url":"https:\/\/www.jsylvest.com\/blog\/2013\/02\/remembering-armen-alchian\/","url_meta":{"origin":226,"position":3},"title":"Armen Alchian &#038; Unnecessary Mathematical Fireworks","author":"jsylvest","date":"27 February 2013","format":false,"excerpt":"Cato Daily Podcast :: Remembering Armen Alchian Don Boudreaux discussing Armen Alchian's preference for clear prose over \"mathematical pyrotechnics\" reminded me of a few neural networks researchers I know. I won't name names, because it wasn't a favorable comparison. There's far too much equation-based whizz-bangery going on in some papers.\u2026","rel":"","context":"In &quot;Business \/ Economics&quot;","block_context":{"text":"Business \/ Economics","link":"https:\/\/www.jsylvest.com\/blog\/category\/business-2\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":762,"url":"https:\/\/www.jsylvest.com\/blog\/2014\/03\/ousterhout-on-performance-improvements\/","url_meta":{"origin":226,"position":4},"title":"Ousterhout on Performance Improvements","author":"jsylvest","date":"22 March 2014","format":"aside","excerpt":"The best performance improvement is the transition from the nonworking state to the working state. \u2014 John Ousterhout","rel":"","context":"In &quot;Art&quot;","block_context":{"text":"Art","link":"https:\/\/www.jsylvest.com\/blog\/category\/art\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":306,"url":"https:\/\/www.jsylvest.com\/blog\/2013\/04\/lahey-on-research\/","url_meta":{"origin":226,"position":5},"title":"Lahey on Research","author":"jsylvest","date":"16 April 2013","format":"aside","excerpt":"There is one thing worse than not doing research, and that is doing research and not changing anything in response to it. \u2014 Terry Lahey, Management in 10 Words, p. 252","rel":"","context":"In &quot;Business \/ Economics&quot;","block_context":{"text":"Business \/ Economics","link":"https:\/\/www.jsylvest.com\/blog\/category\/business-2\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/posts\/226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/comments?post=226"}],"version-history":[{"count":7,"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/posts\/226\/revisions"}],"predecessor-version":[{"id":360,"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/posts\/226\/revisions\/360"}],"wp:attachment":[{"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/media?parent=226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/categories?post=226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jsylvest.com\/blog\/wp-json\/wp\/v2\/tags?post=226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}