9 lines
76 KiB
HTML
9 lines
76 KiB
HTML
|
|
|||
|
<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Why I’m betting on Elixir — Medium</title><link rel="canonical" href="https://medium.com/@kenmazaika/why-im-betting-on-elixir-7c8f847b58"><meta name="title" content="Why I’m betting on Elixir"><meta name="referrer" content="always"><meta name="description" content="And why you should too, unless you want to become a maintenance programmer."><meta property="og:site_name" content="Medium"><meta property="og:title" content="Why I’m betting on Elixir"><meta property="og:url" content="https://medium.com/@kenmazaika/why-im-betting-on-elixir-7c8f847b58"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*tdLleNZLHbx2zfZBUCLqTw.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="And why you should too, unless you want to become a maintenance programmer."><meta name="twitter:site" content="@Medium"><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*tdLleNZLHbx2zfZBUCLqTw.png"><link rel="publisher" href="https://plus.google.com/103654360130207659246"><link rel="author" href="https://medium.com/@kenmazaika"><meta name="author" content="Ken Mazaika"><meta property="og:type" content="article"><meta name="twitter:card" content="summary_large_image"><meta property="article:publisher" content="https://www.facebook.com/medium"><meta property="article:author" content="https://medium.com/@kenmazaika"><meta property="fb:smart_publish:robots" content="noauto"><meta property="article:published_time" content="2015-01-31T22:58:05.645Z"><meta name="twitter:creator" content="@KenMazaika"><meta name="twitter:label1" value="Reading time"><meta name="twitter:data1" value="6 mins"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://p/7c8f847b58"><meta property="al:ios:app_name" content="Medium"><meta property="al:ios:app_store_id" content="828256236"><meta property="al:android:package" content="com.medium.reader"><meta property="al:android:app_name" content="Medium"><meta property="al:ios:url" content="medium://p/7c8f847b58"><meta property="al:android:url" content="medium://p/7c8f847b58"><meta property="al:web:url" content="https://medium.com/@kenmazaika/why-im-betting-on-elixir-7c8f847b58"><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/7c8f847b58" /><meta name="theme-color" content="#000000"><link rel="stylesheet" type="text/css" href="https://cdn-static-1.medium.com/_/fp/css/fonts-base.by5Oi_VbnwEIvhnWIsuUjA.css" /><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-base.D9oFDWv7e_HqE2JUksWc_A.css"><script>if (window.top !== window.self) window.top.location = window.self.location.href;var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}var _gaq = _gaq || []; _gaq.push(["_setAccount", "UA-24232453-2"]); _gaq.push(["_setDomainName", window.location.hostname]); _gaq.push(["_setAllowLinker", true]); _gaq.push(["_trackPageview"]); _asyncScript(("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js");(new Image()).src = "/_/sta
|
|||
|
window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;}
|
|||
|
// ]]></script><script>// <![CDATA[
|
|||
|
var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://medium.com","bestOfFirstSlug":"may-2013","bestOfLatestSlug":"march-2016","buildLabel":"21177-e72e0d1","currentUser":{"userId":"lo_bdb4da6902e9","isVerified":false,"subscriberEmail":""},"currentUserHasUnverifiedEmail":false,"facebookKey":"542599432471018","facebookScope":["public_profile","email","user_friends"],"isAuthenticated":false,"isCurrentUserVerified":false,"language":"ko-kr","loadingPlaceholderImg":"https://cdn-static-1.medium.com/_/fp/img/media-loading-placeholder.b31hiO4ynbDLRrXWEFF4aQ.png","mediumTwitterScreenName":"medium","miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/js/main-base.bundle.dW__CKUOCc949E_bVvU17g.js","notes":"https://cdn-static-1.medium.com/_/fp/js/main-notes.bundle.m8BGKNU7PqmsTVXWE3A5Bg.js","posters":"https://cdn-static-1.medium.com/_/fp/js/main-posters.bundle.5PlF4sgZVJ6K5Yz0X3oJUA.js","common-async":"https://cdn-static-1.medium.com/_/fp/js/main-common-async.bundle.3qi8aIpGvsNY4Z74b-gAEQ.js","stats":"https://cdn-static-1.medium.com/_/fp/js/main-stats.bundle.MQ1BNv7U1_83sYVGJwq-GA.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/js/main-misc-screens.bundle.WpyYdDdfmUpPOolT80gyfA.js"},"postColumnWidth":700,"previewConfig":{"weightThreshold":1,"weightImageParagraph":0.51,"weightIframeParagraph":0.8,"weightTextParagraph":0.08,"weightEmptyParagraph":0,"weightP":0.003,"weightH":0.005,"weightBq":0.003,"minPTextLength":60,"truncateBoundaryChars":20,"detectTitle":true,"detectTitleLevThreshold":0.15},"productName":"Medium","supportsEdit":true,"termsUrl":"//medium.com/policy/9db0094a1e0f","textshotHost":"textshot.medium.com","transactionId":"1461474166450:7e109fca810b","useragent":{"browser":"chrome","family":"chrome","os":"mac","version":50,"supportsDesktopEdit":true,"supportsInteract":true,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":true,"isTier1":true,"clientVersion":"","unknownParagraphsBad":false,"clientChannel":"","supportsRealScrollEvents":true,"supportsVhUnits":true,"ruinsViewportSections":false,"supportsHtml5Video":true,"supportsMagicUnderlines":true,"isFacebook":false,"isWebView":false,"isFacebookWebView":false,"supportsSvgExternalResources":true,"supportsProgressiveMedia":true,"isGoogle":false,"supportsScrollableMetabar":true},"variants":{"allow_access":true,"allow_signup":true,"can_update_settings":true,"can_send_push_notifications":true,"can_export_data":true,"allow_test_auth":"disallow","enable_email_registration":true,"enable_spam_detection":true,"use_experimental_css":true,"can_resume_from_last_read_location":true,"can_follow_users":true,"receive_post_published_pushes":true,"receive_mention_pushes":true,"feed_homepage":true,"welcome_post_url":"https://about.medium.com","signin_services":"twitter,facebook,google,email","signup_services":"twitter,facebook,google,email","mobile_app_promotion":"dialog","enable_bing_search":true,"enable_algolia_search":true,"show_tagged_posts_in_search":true,"enable_sift_integration":true,"friends_only_quotes":true,"enable_user_search_with_bing":true,"enable_drop_caps":true,"enable_session_cookie_encryption":true,"enable_tag_follow_onboarding":true,"your_top_stories_source":"similar-posts","follower_suggestion_source":"friends-of-friends","android_rating_prompt_recommend_threshold":5,"number_of_top_stories":3,"number_of_in_stream_ts4u":3,"number_of_in_stream_global_top_stories":3,"enable_top_stories_in_stream":true,"enable_top_stories_in_stream_on_ios":true,"enable_top_stories_in_stream_on_android":true,"enable_post_recommend_threshold_in_stream":true,"enable_response_recommend_threshold_in_stream":true,"post_recommend_threshold":1,"response_recommend_threshold":2,"google_sign_in_android":true,"enable_pile_on_activity":true,"enable_onboarding":true,"enable_activity_rollup":true,"custom_miro_url":"https://cdn-images-1.medium.com","ios_custom_miro_url":"https://cdn-images-1.medium.com","enable_friends_recommends_plugin":true,"enable_most_recommended_response":true,"no_
|
|||
|
// ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/main-base.bundle.dW__CKUOCc949E_bVvU17g.js" async="true"></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/icons.y2MXEMxiKGQ12y_n-WOUKw.js"></script><script>// <![CDATA[
|
|||
|
window["obvInit"]({"value":{"id":"7c8f847b58","versionId":"37116e0d2fee","creatorId":"18c72d00861","creator":{"userId":"18c72d00861","name":"Ken Mazaika","username":"kenmazaika","createdAt":1375921518763,"lastPostCreatedAt":1461256879753,"imageId":"0*sLJSyB3q7Q-67HVG.jpeg","backgroundImageId":"1*EOcWgdHBARjqatcAAe8KZA.jpeg","bio":"","twitterScreenName":"KenMazaika","socialStats":{"userId":"18c72d00861","usersFollowedCount":67,"usersFollowedByCount":853,"type":"SocialStats"},"social":{"userId":"lo_bdb4da6902e9","targetUserId":"18c72d00861","type":"Social"},"facebookAccountId":"10102167262485419","allowNotes":1,"type":"User"},"homeCollectionId":"","title":"Why I’m betting on Elixir","detectedLanguage":"en","latestVersion":"37116e0d2fee","latestPublishedVersion":"37116e0d2fee","hasUnpublishedEdits":false,"latestRev":1145,"createdAt":1422732778320,"updatedAt":1439298709996,"acceptedAt":0,"firstPublishedAt":1422745085645,"latestPublishedAt":1424710407006,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"And why you should too, unless you want to become a maintenance programmer.","bodyModel":{"paragraphs":[{"name":"dcd7","type":2,"text":"Why I’m betting on Elixir","markups":[]},{"name":"e035","type":3,"text":"And why you should too, unless you want to become a maintenance programmer.","markups":[]},{"name":"3476","type":1,"text":"Background: I’ve spent the past 6 years building web applications in Ruby and the Rails framework. I’ve flirted with new programming languages as they came out, but Elixir is the first language that has been able to captivate me.","markups":[{"type":1,"start":0,"end":12},{"type":2,"start":0,"end":229}]},{"name":"0ece","type":3,"text":"Ruby Crushed It!","markups":[]},{"name":"a616","type":1,"text":"The ruby language and the Rails framework completely changed the way web applications were built; it started a religion of values that the community cared about. It pioneered the idea that the tools programmers use should be optimized for developer happiness and productivity.","markups":[]},{"name":"5a73","type":1,"text":"It made the bold challenge that it is developers’ jobs to make sure their code was adequately tested and worked. Other languages and frameworks scoffed at the approach, until it started winning. Then they started incorporating principles from the ruby community in their language and framework.","markups":[]},{"name":"fc03","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*IT_FzO1BsR1YhuWsWXfCaQ.png","originalWidth":541,"originalHeight":350}},{"name":"7ffa","type":1,"text":"Ruby went from humble beginnings as an obscure language to one of the most popular languages, largely because of the Rails framework and tremendous leadership from people like DHH, Wycats, Aaron Patterson, Jose Valim and a ton of other superstars.","markups":[]},{"name":"8f27","type":3,"text":"But every so often, artifacts of ruby’s humble beginnings arise","markups":[]},{"name":"2e21","type":13,"text":"Run-away memory!","markups":[]},{"name":"2cd5","type":1,"text":"In Zed Shaw’s infamous “Rails is a Ghetto” post, he rants about how problems with garbage collection required early Rails applications restart their processes around every 4 minutes in order to remain live.","markups":[]},{"name":"c6db","type":1,"text":"One of the most popular rails servers out there today is unicorn. My production web application is a Rails application that is fairly simple, in comparison to other applications I’ve worked on. I moved the application to a 512MB DigitalOcean droplet following standard instructions. After being deployed for several days, my unicorns had eaten all available memory and the application was quite slow.","markups":[]},{"name":"606f","type":1,"text":"The solution? The unicorn-worker-killer. It’s not unlike the solution from the early days.","markups":[{"type":3,"start":18,"end":39,"href":"https://www.digitalocean.com/community/tutorials/how-to-optimize-unicorn-workers-in-a-ruby-on-rails-app","title":"","rel":"","anchorType":0}]},{"name":"0067","type":1,"tex
|
|||
|
// ]]></script></body></html>
|