<!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>Hacking and Gonzo – Medium</title><link rel="canonical" href="https://medium.com/hacking-and-gonzo"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://medium.com/feed/hacking-and-gonzo"><meta name="title" content="Hacking and Gonzo – Medium"><meta name="referrer" content="always"><meta name="description" content="Hacking and startups. A publication by Amir Salihefendic."><meta name="keywords" content="DEVELOPMENT, STARTUPS, BUSINESS"><meta property="og:title" content="Hacking and Gonzo – Medium"><meta property="og:url" content="https://medium.com/hacking-and-gonzo"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*HIkyAnkBQwXdzOVavrPwKw.jpeg"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Hacking and startups. A publication by Amir Salihefendic."><meta name="twitter:description" content="Hacking and startups. A publication by Amir Salihefendic."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*HIkyAnkBQwXdzOVavrPwKw.jpeg"><link rel="publisher" href="https://plus.google.com/103654360130207659246"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://medium.com/@amix3k"><meta name="twitter:creator" content="@amix3k"><meta name="twitter:site" content="@Medium"><meta property="og:site_name" content="Medium"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://hacking-and-gonzo"><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://hacking-and-gonzo"><meta property="al:android:url" content="medium://hacking-and-gonzo"><meta property="al:web:url" content="https://medium.com/hacking-and-gonzo"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/hacking-and-gonzo" /><meta name="theme-color" content="#000000"><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-base.g2e09PlZK_j3Lw2AgNmbfQ.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 = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-sizeViewHeight100 {height: " + height + "px !important;}.u-sizeViewHeight110 {height: " + Math.round(1.1 * height) + "px !important;}.u-sizeViewHeightMin100 {min-height: " + height + "px !important;}.u-sizeViewHeightMax100 {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.js"></script><![endif]--><link rel="icon" href="https://cdn-static-1.medium.com/_/fp/icons/favicon-medium.TAS6uQ-Y7kcKgi0xjcYHXw.ico" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/152/152/1*HIkyAnkBQwXdzOVavrPwKw.jpeg"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/120/120/1*HIkyAnkBQwXdzOVavrPwKw.jpeg"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/76/76/1*HIkyAnkBQwXdzOVavrPwKw.jpeg"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/60/60/1*HIkyAnkBQwXdzOVavrPwKw.jpeg"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/favicon.KjTfUJo7yJH_fCoUzzH3cg.svg" color="#171717"></head><body itemscope class="  is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix js-metabar"><div class="metabar-inner u-marginAuto u-maxWidth1000 u-paddingLeft20 u-paddingRight20 js-metabarMiddle"><div class="metabar-block metabar-block--left u-floatLeft u-height65 u-xs-height56"><a href="https://medium.com/" class="siteNav-logo" data-log-event="home"><span class="svgIcon svgIcon--logoNew svgIcon--45px is-flushLeft"><svg class="svgIcon-use" width="45" height="45"  viewBox="-17 18 45 45" data-multipart="true"><path d="M11.525 28.078c-.472-.225-.858.002-.858.506v20.044l8.616 4.113c.948.46 1.717.14 1.717-.7v-19.3a.22.22 0 0 0-.124-.19l-9.35-4.46v-.01z"/><path d="M.333 43.696l9.83-15.247c.278-.43.89-.6 1.36-.38l9.364 4.47c.06.03.082.1.047.15L10.666 48.63.333 43.698v-.002z"/><path d="M-8.57 28.35c-.786-.375-1.053-.096-.592.62L.333 43.696l10.333 4.932L.356 32.635a.156.156 0 0 0-.06-.054l-8.866-4.23z"/><path d="M.333 52.033c0 .84-.643 1.22-1.43.844l-8.045-3.84c-.472-.224-.858-.82-.858-1.325V28.89c0-.672.515-.976 1.145-.675l9.133 4.36a.092.092 0 0 1 .055.084v19.37z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="metabar-block u-floatRight u-xs-absolute u-xs-textAlignRight u-xs-right0 u-xs-marginRight20 u-height65 u-xs-height56"><div class="u-alignMiddle u-inlineBlock u-verticalAlignTop u-height65 u-xs-height56"><div class="u-alignBlock"><div class="buttonSet u-lineHeightInherit"><a class="button button--primary button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-lineHeight30 u-height32"  href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fhacking-and-gonzo" data-action="sign-in-prompt" data-redirect="https://medium.com/hacking-and-gonzo" data-action-source="nav_signup">Sign in / Sign up</a></div></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutLarge collectionHeader--alignmentLeft collectionHeader--withoutLogo collectionHeader--withoutBackground collectionHeader--colorBehaviorSubtle collectionHeader--withoutNavigation collectionHeader--editorLayoutTitle is-modeView"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground"><div class="collectionHeader-overlayBackground u-sizeViewHeight100"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1040 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style=""><a class="link u-baseColor--link"  href="https://medium.com/hacking-and-gonzo" title="Go to Hacking and Gonzo" aria-label="Go to Hacking and Gonzo"><div class="u-relative u-marginAuto"><div style="padding-bottom: 75%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage"  /></div></a></div><div class="collectionHeader-nameAndDescription"><a class="link link--noUnderline u-baseColor--link"  href="https://medium.com/hacking-and-gonzo" title="Go to Hacking and Gonzo" aria-label="Go to Hacking and Gonzo"><h1 class="collectionHeader-name js-collectionName u-foreground u-baseColor--textDark u-paddingBottom4 u-lineHeightTightest u-contentSansBold u-fontSize40 u-xs-fontSize32">Hacking and Gonzo</h1></a><h2 class="collectionHeader-description js-collectionDescription u-foreground u-baseColor--textNormal u-contentSansRegular u-fontSize24 u-xs-fontSize18">Hacking and startups. A publication by Amir Salihefendic.</h2></div></div></div></header></div><div class="collectionHeader-aspectRatioCell"><div class="collectionHeader-aspectRatioFullWidth"></div></div></div><div class="collectionHeader-blockNav"><div class="u-borderBox u-maxWidth1040 u-paddingLeft20 u-paddingRight20 u-marginAuto"><nav class="collectionHeader-nav u-clearfix js-collectionHeaderNav u-lineHeight40 u-overflowHiddenY"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-xs-marginRight15 u-paddingBottom100"><div class="u-inlineBlock u-top1 u-xs-top1 u-relative u-paddingRight10"><label class="button button--chromeless button--small button--circle button--withIcon button--withSvgIcon inputGroup u-sm-hide metabar-predictiveSearch u-widthAuto u-baseColor--placeholderNormal " title="Search"><span class="svgIcon svgIcon--search svgIcon--25px u-top0 u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25"  viewBox="0 0 25 25"><path d="M20.067 18.933l-4.157-4.157a6 6 0 1 0-.884.884l4.157 4.157a.624.624 0 1 0 .884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent " type="search" placeholder="Search" required="true" data-collection-id="9f8ed43c1aae" /></label></div><a class="button button--chromeless is-touchIconBlackPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon u-verticalAlignMiddle"  href="https://twitter.com/amix3k" title="Visit “Hacking and Gonzo” on Twitter" aria-label="Visit “Hacking and Gonzo” on Twitter" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--twitterFilled svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M21.725 5.338c-.744.47-1.605.804-2.513 1.006a3.978 3.978 0 0 0-2.942-1.293c-2.22 0-4.02 1.81-4.02 4.02 0 .32.034.63.07.94-3.31-.18-6.27-1.78-8.255-4.23a4.544 4.544 0 0 0-.574 2.01c.04 1.43.74 2.66 1.8 3.38-.63-.01-1.25-.19-1.79-.5v.08c0 1.93 1.38 3.56 3.23 3.95-.34.07-.7.12-1.07.14-.25-.02-.5-.04-.72-.07.49 1.58 1.97 2.74 3.74 2.8a8.49 8.49 0 0 1-5.02 1.72c-.3-.03-.62-.04-.93-.07A11.447 11.447 0 0 0 8.88 21c7.386 0 11.43-6.13 11.414-11.414.015-.21.01-.38 0-.578a7.604 7.604 0 0 0 2.01-2.08 7.27 7.27 0 0 1-2.297.645 3.856 3.856 0 0 0 1.72-2.23"/></svg></span></span></a></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><button class="button button--primary u-paddingLeft10 u-paddingRight10 u-height19 u-lineHeight13 u-verticalAlignMiddle u-fontSize12 u-uiTextMedium button--small u-noUserSelect button--withChrome u-accentColor--buttonNormal js-relationshipButton is-smallPill"  data-action="sign-in-prompt" data-sign-in-action="toggle-follow-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/hacking-and-gonzo" data-collection-id="9f8ed43c1aae"><span class="button-label  js-buttonLabel">Follow</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><div class="u-clearfix u-maxWidth1000 u-marginAuto"><div class="row u-marginTop30 u-marginBottom20 u-xs-marginTop0 u-xs-marginRight0 u-xs-marginLeft0"><div class="col u-size8of12 u-xs-size12of12"><div class="postArticle postArticle--short is-withAccentColors"><div class="u-paddingBottom25 u-paddingTop20 js-trackedPost u-borderBottomLight" data-source="collection_home---6------0-----------" data-post-id="44be43458ef6"><div class="u-clearfix u-marginBottom10"><div class="postMetaInline u-floatLeft"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link avatar u-baseColor--link"  href="https://medium.com/@amix3k" data-action="show-user-card" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/36/36/1*SRisQLFPniDfMx8j4WFO_Q.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Amir Salihefendic"></a></div><div class="postMetaInline-authorLockup u-flex1 u-noWrapWithEllipsis"><a class="link link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken u-baseColor--link"  href="https://medium.com/@amix3k?source=collection_home---6------0-----------" data-action="show-user-card" data-action-source="collection_home---6------0-----------" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto">Amir Salihefendic</a><div class="u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/hacking-and-gonzo/bitmapist-analytics-and-cohorts-for-redis-44be43458ef6?source=collection_home---6------0-----------" data-action="open-post" data-action-value="https://medium.com/hacking-and-gonzo/bitmapist-analytics-and-cohorts-for-redis-44be43458ef6?source=collection_home---6------0-----------" data-action-source="preview-listing"><time datetime="2015-12-16T02:38:50.230Z">Dec 15, 2015</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div><a class=""  href="https://medium.com/hacking-and-gonzo/bitmapist-analytics-and-cohorts-for-redis-44be43458ef6?source=collection_home---6------0-----------" data-action-source="collection_home---6------0-----------"><div class="u-maxWidth600 u-margin0 postArticle-content js-postField"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="fabb" id="fabb" class="graf graf--figure graf--layoutConstrainedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked" style="max-width: 480px; max-height: 240px;"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 50%;"></div><img class="graf-image" data-image-id="1*X5mNDldpp5MqhkNfM1BcPg.png" data-width="1000" data-height="500" src="https://cdn-images-1.medium.com/max/480/1*X5mNDldpp5MqhkNfM1BcPg.png"></div></figure><h3 name="b536" id="b536" class="graf graf--h3 graf-after--figure graf--title">bitmapist: Analytics and cohorts for Redis</h3><p name="e2e1" id="e2e1" class="graf graf--p graf-after--h3 graf--trailing">In 2012 I released <span class="markup--anchor markup--p-anchor" data-action="open-inner-link" data-action-value="https://github.com/Doist/bitmapist">bitmapist</span>, a powerful realtime analytics library that can help you…</p></div></div></section></div></a><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/bitmapist-analytics-and-cohorts-for-redis-44be43458ef6?source=collection_home---6------0-----------" data-action-source="collection_home---6------0-----------">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="buttonSet buttonSet--withLabels u-floatLeft"><div class="buttonSet-inner"><div class="js-actionRecommend" data-post-id="44be43458ef6" data-is-flush-left="true" data-source="listing"><button class="button button--primary button--chromeless is-touchIconFadeInPulse u-accentColor--buttonNormal button--withIcon button--withSvgIcon u-accentColor--iconLight js-actionRecommendButton"  title="Recommend to share this article with your followers and let the author know you liked it" aria-label="Recommend to share this article with your followers and let the author know you liked it" data-action="sign-in-prompt" data-sign-in-action="upvote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/44be43458ef6" data-action-source="listing"><span class="button-defaultState"><span class="svgIcon svgIcon--heart svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12zM8.428 4.866c-2.414 0-4.378 2.05-4.378 4.568 0 3.475 5.057 7.704 7.774 9.975.243.2.47.39.676.56.245-.21.52-.43.813-.68 2.856-2.36 7.637-6.31 7.637-9.87 0-2.52-1.964-4.57-4.377-4.57-1.466 0-2.828.76-3.644 2.04-.1.14-.26.23-.43.23-.18 0-.34-.09-.43-.24-.82-1.27-2.18-2.03-3.65-2.03z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--heartFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12z" fill-rule="evenodd"/></svg></span></span></button><button class="button button--chromeless u-baseColor--buttonNormal u-disablePointerEvents"  data-action="show-recommends" data-action-value="44be43458ef6">24</button></div></div></div><div class="buttonSet u-floatRight"><div class="buttonSet-inner"><a class="button button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/bitmapist-analytics-and-cohorts-for-redis-44be43458ef6?source=collection_home---6------0-----------#--responses" data-action-source="collection_home---6------0-----------">3 responses</a><button class="button button--chromeless is-touchIconFadeInPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton"  title="Bookmark this story to read later" aria-label="Bookmark this story to read later" data-action="sign-in-prompt" data-sign-in-action="add-to-bookmarks" data-requires-token="true" data-redirect="https://medium.com/_/bookmark/p/44be43458ef6"><span class="button-defaultState"><span class="svgIcon svgIcon--bookmark svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 16.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V6zm-6.838 9.97L7 19.636V6c0-.55.45-1 1-1h9c.55 0 1 .45 1 1v13.637l-5.162-3.668a.49.49 0 0 0-.676 0z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="26" viewBox="0 0 25 26" ><path d="M19 7c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 17.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V7z" fill-rule="evenodd"/></svg></span></span></button></div></div></div></div></div><div class="postArticle postArticle--short is-withAccentColors"><div class="u-paddingBottom25 u-paddingTop20 js-trackedPost u-borderBottomLight" data-source="collection_home---6------1-----------" data-post-id="180017c47fda"><div class="u-clearfix u-marginBottom10"><div class="postMetaInline u-floatLeft"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link avatar u-baseColor--link"  href="https://medium.com/@amix3k" data-action="show-user-card" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/36/36/1*SRisQLFPniDfMx8j4WFO_Q.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Amir Salihefendic"></a></div><div class="postMetaInline-authorLockup u-flex1 u-noWrapWithEllipsis"><a class="link link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken u-baseColor--link"  href="https://medium.com/@amix3k?source=collection_home---6------1-----------" data-action="show-user-card" data-action-source="collection_home---6------1-----------" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto">Amir Salihefendic</a><div class="u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/hacking-and-gonzo/reactive-vs-proactive-development-180017c47fda?source=collection_home---6------1-----------" data-action="open-post" data-action-value="https://medium.com/hacking-and-gonzo/reactive-vs-proactive-development-180017c47fda?source=collection_home---6------1-----------" data-action-source="preview-listing"><time datetime="2015-12-11T21:08:18.257Z">Dec 11, 2015</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="1 min read"></span></div></div></div></div></div><a class=""  href="https://medium.com/hacking-and-gonzo/reactive-vs-proactive-development-180017c47fda?source=collection_home---6------1-----------" data-action-source="collection_home---6------1-----------"><div class="u-maxWidth600 u-margin0 postArticle-content js-postField"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><h3 name="e4f6" id="e4f6" class="graf graf--h3 graf--leading graf--title">Reactive vs. proactive development</h3><p name="62be" id="62be" class="graf graf--p graf-after--h3">It’s essential for good developers to switch between reactive and proactive modes.</p><p name="4018" id="4018" class="graf graf--p graf-after--p">The definition of reactive and proactive is as follows:</p><ul class="postList"><li name="9aec" id="9aec" class="graf graf--li graf-after--p graf--trailing"><span class="markup--anchor markup--li-anchor" data-action="open-inner-link" data-action-value="http://en.wiktionary.org/wiki/reactive">Reactive</span>: Reacting to the past rather than anticipating the future</li></ul></div></div></section></div></a><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/reactive-vs-proactive-development-180017c47fda?source=collection_home---6------1-----------" data-action-source="collection_home---6------1-----------">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="buttonSet buttonSet--withLabels u-floatLeft"><div class="buttonSet-inner"><div class="js-actionRecommend" data-post-id="180017c47fda" data-is-flush-left="true" data-source="listing"><button class="button button--primary button--chromeless is-touchIconFadeInPulse u-accentColor--buttonNormal button--withIcon button--withSvgIcon u-accentColor--iconLight js-actionRecommendButton"  title="Recommend to share this article with your followers and let the author know you liked it" aria-label="Recommend to share this article with your followers and let the author know you liked it" data-action="sign-in-prompt" data-sign-in-action="upvote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/180017c47fda" data-action-source="listing"><span class="button-defaultState"><span class="svgIcon svgIcon--heart svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12zM8.428 4.866c-2.414 0-4.378 2.05-4.378 4.568 0 3.475 5.057 7.704 7.774 9.975.243.2.47.39.676.56.245-.21.52-.43.813-.68 2.856-2.36 7.637-6.31 7.637-9.87 0-2.52-1.964-4.57-4.377-4.57-1.466 0-2.828.76-3.644 2.04-.1.14-.26.23-.43.23-.18 0-.34-.09-.43-.24-.82-1.27-2.18-2.03-3.65-2.03z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--heartFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12z" fill-rule="evenodd"/></svg></span></span></button><button class="button button--chromeless u-baseColor--buttonNormal u-disablePointerEvents"  data-action="show-recommends" data-action-value="180017c47fda">28</button></div></div></div><div class="buttonSet u-floatRight"><div class="buttonSet-inner"><a class="button button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/reactive-vs-proactive-development-180017c47fda?source=collection_home---6------1-----------#--responses" data-action-source="collection_home---6------1-----------">4 responses</a><button class="button button--chromeless is-touchIconFadeInPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton"  title="Bookmark this story to read later" aria-label="Bookmark this story to read later" data-action="sign-in-prompt" data-sign-in-action="add-to-bookmarks" data-requires-token="true" data-redirect="https://medium.com/_/bookmark/p/180017c47fda"><span class="button-defaultState"><span class="svgIcon svgIcon--bookmark svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 16.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V6zm-6.838 9.97L7 19.636V6c0-.55.45-1 1-1h9c.55 0 1 .45 1 1v13.637l-5.162-3.668a.49.49 0 0 0-.676 0z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="26" viewBox="0 0 25 26" ><path d="M19 7c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 17.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V7z" fill-rule="evenodd"/></svg></span></span></button></div></div></div></div></div><div class="postArticle postArticle--short is-withAccentColors"><div class="u-paddingBottom25 u-paddingTop20 js-trackedPost u-borderBottomLight" data-source="collection_home---6------2-----------" data-post-id="6393842b3537"><div class="u-clearfix u-marginBottom10"><div class="postMetaInline u-floatLeft"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link avatar u-baseColor--link"  href="https://medium.com/@amix3k" data-action="show-user-card" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/36/36/1*SRisQLFPniDfMx8j4WFO_Q.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Amir Salihefendic"></a></div><div class="postMetaInline-authorLockup u-flex1 u-noWrapWithEllipsis"><a class="link link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken u-baseColor--link"  href="https://medium.com/@amix3k?source=collection_home---6------2-----------" data-action="show-user-card" data-action-source="collection_home---6------2-----------" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto">Amir Salihefendic</a><div class="u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/hacking-and-gonzo/10-vim-tricks-you-should-know-6393842b3537?source=collection_home---6------2-----------" data-action="open-post" data-action-value="https://medium.com/hacking-and-gonzo/10-vim-tricks-you-should-know-6393842b3537?source=collection_home---6------2-----------" data-action-source="preview-listing"><time datetime="2015-12-09T18:10:00.278Z">Dec 9, 2015</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="2 min read"></span></div></div></div></div></div><a class=""  href="https://medium.com/hacking-and-gonzo/10-vim-tricks-you-should-know-6393842b3537?source=collection_home---6------2-----------" data-action-source="collection_home---6------2-----------"><div class="u-maxWidth600 u-margin0 postArticle-content js-postField"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="7da6" id="7da6" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="1*EV8LVTuU0xxhTiXQ_en09w.jpeg" data-width="1500" data-height="600" src="https://cdn-images-1.medium.com/fit/t/800/240/1*EV8LVTuU0xxhTiXQ_en09w.jpeg"></div></figure><h3 name="30d0" id="30d0" class="graf graf--h3 graf-after--figure graf--title">10 Vim tricks you should know</h3><p name="fc58" id="fc58" class="graf graf--p graf-after--h3">Here are 10 Vim tips that I think you should know about.</p><h4 name="a314" id="a314" class="graf graf--h4 graf-after--p graf--trailing">The super star and…</h4></div></div></section></div></a><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/10-vim-tricks-you-should-know-6393842b3537?source=collection_home---6------2-----------" data-action-source="collection_home---6------2-----------">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="buttonSet buttonSet--withLabels u-floatLeft"><div class="buttonSet-inner"><div class="js-actionRecommend" data-post-id="6393842b3537" data-is-flush-left="true" data-source="listing"><button class="button button--primary button--chromeless is-touchIconFadeInPulse u-accentColor--buttonNormal button--withIcon button--withSvgIcon u-accentColor--iconLight js-actionRecommendButton"  title="Recommend to share this article with your followers and let the author know you liked it" aria-label="Recommend to share this article with your followers and let the author know you liked it" data-action="sign-in-prompt" data-sign-in-action="upvote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/6393842b3537" data-action-source="listing"><span class="button-defaultState"><span class="svgIcon svgIcon--heart svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12zM8.428 4.866c-2.414 0-4.378 2.05-4.378 4.568 0 3.475 5.057 7.704 7.774 9.975.243.2.47.39.676.56.245-.21.52-.43.813-.68 2.856-2.36 7.637-6.31 7.637-9.87 0-2.52-1.964-4.57-4.377-4.57-1.466 0-2.828.76-3.644 2.04-.1.14-.26.23-.43.23-.18 0-.34-.09-.43-.24-.82-1.27-2.18-2.03-3.65-2.03z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--heartFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12z" fill-rule="evenodd"/></svg></span></span></button><button class="button button--chromeless u-baseColor--buttonNormal u-disablePointerEvents"  data-action="show-recommends" data-action-value="6393842b3537">90</button></div></div></div><div class="buttonSet u-floatRight"><div class="buttonSet-inner"><a class="button button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/10-vim-tricks-you-should-know-6393842b3537?source=collection_home---6------2-----------#--responses" data-action-source="collection_home---6------2-----------">6 responses</a><button class="button button--chromeless is-touchIconFadeInPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton"  title="Bookmark this story to read later" aria-label="Bookmark this story to read later" data-action="sign-in-prompt" data-sign-in-action="add-to-bookmarks" data-requires-token="true" data-redirect="https://medium.com/_/bookmark/p/6393842b3537"><span class="button-defaultState"><span class="svgIcon svgIcon--bookmark svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 16.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V6zm-6.838 9.97L7 19.636V6c0-.55.45-1 1-1h9c.55 0 1 .45 1 1v13.637l-5.162-3.668a.49.49 0 0 0-.676 0z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="26" viewBox="0 0 25 26" ><path d="M19 7c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 17.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V7z" fill-rule="evenodd"/></svg></span></span></button></div></div></div></div></div><div class="postArticle postArticle--short is-withAccentColors"><div class="u-paddingBottom25 u-paddingTop20 js-trackedPost" data-source="collection_home---6------3-----------" data-post-id="ef111e33d0d9"><div class="u-clearfix u-marginBottom10"><div class="postMetaInline u-floatLeft"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link avatar u-baseColor--link"  href="https://medium.com/@amix3k" data-action="show-user-card" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/36/36/1*SRisQLFPniDfMx8j4WFO_Q.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Amir Salihefendic"></a></div><div class="postMetaInline-authorLockup u-flex1 u-noWrapWithEllipsis"><a class="link link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken u-baseColor--link"  href="https://medium.com/@amix3k?source=collection_home---6------3-----------" data-action="show-user-card" data-action-source="collection_home---6------3-----------" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto">Amir Salihefendic</a><div class="u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9?source=collection_home---6------3-----------" data-action="open-post" data-action-value="https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9?source=collection_home---6------3-----------" data-action-source="preview-listing"><time datetime="2015-12-08T16:50:19.988Z">Dec 8, 2015</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div><a class=""  href="https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9?source=collection_home---6------3-----------" data-action-source="collection_home---6------3-----------"><div class="u-maxWidth600 u-margin0 postArticle-content js-postField"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="7c44" id="7c44" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="1*jBLUG0RQb34y_q5taxxUkQ.jpeg" data-width="1500" data-height="600" src="https://cdn-images-1.medium.com/fit/t/800/240/1*jBLUG0RQb34y_q5taxxUkQ.jpeg"></div></figure><h3 name="1131" id="1131" class="graf graf--h3 graf-after--figure graf--title">How Reddit ranking algorithms work</h3><p name="c431" id="c431" class="graf graf--p graf-after--h3 graf--trailing">This is a follow up post to <span class="markup--anchor markup--p-anchor" data-action="open-inner-link" data-action-value="https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d">How Hacker News ranking algorithm works</span>. This time around I will…</p></div></div></section></div></a><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9?source=collection_home---6------3-----------" data-action-source="collection_home---6------3-----------">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="buttonSet buttonSet--withLabels u-floatLeft"><div class="buttonSet-inner"><div class="js-actionRecommend" data-post-id="ef111e33d0d9" data-is-flush-left="true" data-source="listing"><button class="button button--primary button--chromeless is-touchIconFadeInPulse u-accentColor--buttonNormal button--withIcon button--withSvgIcon u-accentColor--iconLight js-actionRecommendButton"  title="Recommend to share this article with your followers and let the author know you liked it" aria-label="Recommend to share this article with your followers and let the author know you liked it" data-action="sign-in-prompt" data-sign-in-action="upvote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/ef111e33d0d9" data-action-source="listing"><span class="button-defaultState"><span class="svgIcon svgIcon--heart svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12zM8.428 4.866c-2.414 0-4.378 2.05-4.378 4.568 0 3.475 5.057 7.704 7.774 9.975.243.2.47.39.676.56.245-.21.52-.43.813-.68 2.856-2.36 7.637-6.31 7.637-9.87 0-2.52-1.964-4.57-4.377-4.57-1.466 0-2.828.76-3.644 2.04-.1.14-.26.23-.43.23-.18 0-.34-.09-.43-.24-.82-1.27-2.18-2.03-3.65-2.03z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--heartFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12z" fill-rule="evenodd"/></svg></span></span></button><button class="button button--chromeless u-baseColor--buttonNormal u-disablePointerEvents"  data-action="show-recommends" data-action-value="ef111e33d0d9">274</button></div></div></div><div class="buttonSet u-floatRight"><div class="buttonSet-inner"><a class="button button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9?source=collection_home---6------3-----------#--responses" data-action-source="collection_home---6------3-----------">24 responses</a><button class="button button--chromeless is-touchIconFadeInPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton"  title="Bookmark this story to read later" aria-label="Bookmark this story to read later" data-action="sign-in-prompt" data-sign-in-action="add-to-bookmarks" data-requires-token="true" data-redirect="https://medium.com/_/bookmark/p/ef111e33d0d9"><span class="button-defaultState"><span class="svgIcon svgIcon--bookmark svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 16.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V6zm-6.838 9.97L7 19.636V6c0-.55.45-1 1-1h9c.55 0 1 .45 1 1v13.637l-5.162-3.668a.49.49 0 0 0-.676 0z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="26" viewBox="0 0 25 26" ><path d="M19 7c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 17.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V7z" fill-rule="evenodd"/></svg></span></span></button></div></div></div></div></div></div><div class="col u-size4of12 u-xs-size12of12 js-aboutCollectionBox u-marginTop30 u-minHeight250 u-xs-hide"></div></div></div></div><div class="streamItem streamItem--section js-streamItem"><div class="u-clearfix u-maxWidth1000 u-marginAuto"><div class="row u-marginTop30 u-marginBottom20 u-xs-marginTop0 u-xs-marginRight0 u-xs-marginLeft0"><div class="col u-size8of12 u-xs-size12of12"><header class="heading u-clearfix heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Latest</span></div></div></header><div class="postArticle postArticle--short is-withAccentColors"><div class="u-paddingBottom25 u-paddingTop20 js-trackedPost u-borderBottomLight" data-source="collection_home---6------0-----------" data-post-id="1d9b0cf2c08d"><div class="u-clearfix u-marginBottom10"><div class="postMetaInline u-floatLeft"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link avatar u-baseColor--link"  href="https://medium.com/@amix3k" data-action="show-user-card" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/36/36/1*SRisQLFPniDfMx8j4WFO_Q.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Amir Salihefendic"></a></div><div class="postMetaInline-authorLockup u-flex1 u-noWrapWithEllipsis"><a class="link link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken u-baseColor--link"  href="https://medium.com/@amix3k?source=collection_home---6------0-----------" data-action="show-user-card" data-action-source="collection_home---6------0-----------" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto">Amir Salihefendic</a><div class="u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d?source=collection_home---6------0-----------" data-action="open-post" data-action-value="https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d?source=collection_home---6------0-----------" data-action-source="preview-listing"><time datetime="2015-12-08T16:34:40.575Z">Dec 8, 2015</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="3 min read"></span></div></div></div></div></div><a class=""  href="https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d?source=collection_home---6------0-----------" data-action-source="collection_home---6------0-----------"><div class="u-maxWidth600 u-margin0 postArticle-content js-postField"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="5f67" id="5f67" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="1*fHYfF7gvyTv-RkQngRvfIg.jpeg" data-width="1500" data-height="600" src="https://cdn-images-1.medium.com/fit/t/800/240/1*fHYfF7gvyTv-RkQngRvfIg.jpeg"></div></figure><h3 name="a9d9" id="a9d9" class="graf graf--h3 graf-after--figure graf--title">How Hacker News ranking algorithm works</h3><p name="3fe9" id="3fe9" class="graf graf--p graf-after--h3 graf--trailing">In this post I’ll try to explain how the <span class="markup--anchor markup--p-anchor" data-action="open-inner-link" data-action-value="http://news.ycombinator.com/">Hacker News</span> ranking algorithm works and how you…</p></div></div></section></div></a><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d?source=collection_home---6------0-----------" data-action-source="collection_home---6------0-----------">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="buttonSet buttonSet--withLabels u-floatLeft"><div class="buttonSet-inner"><div class="js-actionRecommend" data-post-id="1d9b0cf2c08d" data-is-flush-left="true" data-source="listing"><button class="button button--primary button--chromeless is-touchIconFadeInPulse u-accentColor--buttonNormal button--withIcon button--withSvgIcon u-accentColor--iconLight js-actionRecommendButton"  title="Recommend to share this article with your followers and let the author know you liked it" aria-label="Recommend to share this article with your followers and let the author know you liked it" data-action="sign-in-prompt" data-sign-in-action="upvote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/1d9b0cf2c08d" data-action-source="listing"><span class="button-defaultState"><span class="svgIcon svgIcon--heart svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12zM8.428 4.866c-2.414 0-4.378 2.05-4.378 4.568 0 3.475 5.057 7.704 7.774 9.975.243.2.47.39.676.56.245-.21.52-.43.813-.68 2.856-2.36 7.637-6.31 7.637-9.87 0-2.52-1.964-4.57-4.377-4.57-1.466 0-2.828.76-3.644 2.04-.1.14-.26.23-.43.23-.18 0-.34-.09-.43-.24-.82-1.27-2.18-2.03-3.65-2.03z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--heartFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12z" fill-rule="evenodd"/></svg></span></span></button><button class="button button--chromeless u-baseColor--buttonNormal u-disablePointerEvents"  data-action="show-recommends" data-action-value="1d9b0cf2c08d">116</button></div></div></div><div class="buttonSet u-floatRight"><div class="buttonSet-inner"><a class="button button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d?source=collection_home---6------0-----------#--responses" data-action-source="collection_home---6------0-----------">3 responses</a><button class="button button--chromeless is-touchIconFadeInPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton"  title="Bookmark this story to read later" aria-label="Bookmark this story to read later" data-action="sign-in-prompt" data-sign-in-action="add-to-bookmarks" data-requires-token="true" data-redirect="https://medium.com/_/bookmark/p/1d9b0cf2c08d"><span class="button-defaultState"><span class="svgIcon svgIcon--bookmark svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 16.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V6zm-6.838 9.97L7 19.636V6c0-.55.45-1 1-1h9c.55 0 1 .45 1 1v13.637l-5.162-3.668a.49.49 0 0 0-.676 0z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="26" viewBox="0 0 25 26" ><path d="M19 7c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 17.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V7z" fill-rule="evenodd"/></svg></span></span></button></div></div></div></div></div><div class="postArticle postArticle--short is-withAccentColors"><div class="u-paddingBottom25 u-paddingTop20 js-trackedPost" data-source="collection_home---6------1-----------" data-post-id="57b28c0f71b7"><div class="u-clearfix u-marginBottom10"><div class="postMetaInline u-floatLeft"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link avatar u-baseColor--link"  href="https://medium.com/@amix3k" data-action="show-user-card" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto"><img  src="https://cdn-images-1.medium.com/fit/c/36/36/1*SRisQLFPniDfMx8j4WFO_Q.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Amir Salihefendic"></a></div><div class="postMetaInline-authorLockup u-flex1 u-noWrapWithEllipsis"><a class="link link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken u-baseColor--link"  href="https://medium.com/@amix3k?source=collection_home---6------1-----------" data-action="show-user-card" data-action-source="collection_home---6------1-----------" data-action-value="bb7c4a93e2ee" data-action-type="hover" data-user-id="bb7c4a93e2ee" dir="auto">Amir Salihefendic</a><div class="u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><a class="link link--darken" href="https://medium.com/hacking-and-gonzo/flux-vs-mvc-design-patterns-57b28c0f71b7?source=collection_home---6------1-----------" data-action="open-post" data-action-value="https://medium.com/hacking-and-gonzo/flux-vs-mvc-design-patterns-57b28c0f71b7?source=collection_home---6------1-----------" data-action-source="preview-listing"><time datetime="2015-02-09T23:53:56.759Z">Feb 9, 2015</time></a><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div><a class=""  href="https://medium.com/hacking-and-gonzo/flux-vs-mvc-design-patterns-57b28c0f71b7?source=collection_home---6------1-----------" data-action-source="collection_home---6------1-----------"><div class="u-maxWidth600 u-margin0 postArticle-content js-postField"><section class="section section--body section--first section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><figure name="8f25" id="8f25" class="graf graf--figure graf--layoutCroppedHeightPreview graf--leading"><div class="aspectRatioPlaceholder is-locked"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 30%;"></div><img class="graf-image" data-image-id="1*mEBWQ8ZQYIMe5xE_DiCgTA.jpeg" data-width="1500" data-height="600" src="https://cdn-images-1.medium.com/fit/t/800/240/1*mEBWQ8ZQYIMe5xE_DiCgTA.jpeg"></div></figure><h2 name="098a" id="098a" class="graf graf--h2 graf-after--figure graf--title">Flux vs. MVC (Design Patterns)</h2><p name="c633" id="c633" class="graf graf--p graf-after--h2 graf--trailing">A look at how Facebook’s Flux pattern solves things differently, especially in relation to the Model-View…</p></div></div></section></div></a><div class="postArticle-readMore"><a class="button button--smaller button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/flux-vs-mvc-design-patterns-57b28c0f71b7?source=collection_home---6------1-----------" data-action-source="collection_home---6------1-----------">Read more…</a></div><div class="u-clearfix u-paddingTop10"><div class="buttonSet buttonSet--withLabels u-floatLeft"><div class="buttonSet-inner"><div class="js-actionRecommend" data-post-id="57b28c0f71b7" data-is-flush-left="true" data-source="listing"><button class="button button--primary button--chromeless is-touchIconFadeInPulse u-accentColor--buttonNormal button--withIcon button--withSvgIcon u-accentColor--iconLight js-actionRecommendButton"  title="Recommend to share this article with your followers and let the author know you liked it" aria-label="Recommend to share this article with your followers and let the author know you liked it" data-action="sign-in-prompt" data-sign-in-action="upvote" data-requires-token="true" data-redirect="https://medium.com/_/vote/p/57b28c0f71b7" data-action-source="listing"><span class="button-defaultState"><span class="svgIcon svgIcon--heart svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12zM8.428 4.866c-2.414 0-4.378 2.05-4.378 4.568 0 3.475 5.057 7.704 7.774 9.975.243.2.47.39.676.56.245-.21.52-.43.813-.68 2.856-2.36 7.637-6.31 7.637-9.87 0-2.52-1.964-4.57-4.377-4.57-1.466 0-2.828.76-3.644 2.04-.1.14-.26.23-.43.23-.18 0-.34-.09-.43-.24-.82-1.27-2.18-2.03-3.65-2.03z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--heartFilled svgIcon--25px is-flushLeft"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M12.5 21a.492.492 0 0 1-.327-.122c-.278-.24-.61-.517-.978-.826-2.99-2.5-7.995-6.684-7.995-10.565C3.2 6.462 5.578 4 8.5 4c1.55 0 3 .695 4 1.89a5.21 5.21 0 0 1 4-1.89c2.923 0 5.3 2.462 5.3 5.487 0 3.97-4.923 8.035-7.865 10.464-.42.35-.798.66-1.108.93a.503.503 0 0 1-.327.12z" fill-rule="evenodd"/></svg></span></span></button><button class="button button--chromeless u-baseColor--buttonNormal u-disablePointerEvents"  data-action="show-recommends" data-action-value="57b28c0f71b7">128</button></div></div></div><div class="buttonSet u-floatRight"><div class="buttonSet-inner"><a class="button button--chromeless u-baseColor--buttonNormal"  href="https://medium.com/hacking-and-gonzo/flux-vs-mvc-design-patterns-57b28c0f71b7?source=collection_home---6------1-----------#--responses" data-action-source="collection_home---6------1-----------">11 responses</a><button class="button button--chromeless is-touchIconFadeInPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--bookmark js-bookmarkButton"  title="Bookmark this story to read later" aria-label="Bookmark this story to read later" data-action="sign-in-prompt" data-sign-in-action="add-to-bookmarks" data-requires-token="true" data-redirect="https://medium.com/_/bookmark/p/57b28c0f71b7"><span class="button-defaultState"><span class="svgIcon svgIcon--bookmark svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="25" viewBox="0 0 25 25" ><path d="M19 6c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 16.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V6zm-6.838 9.97L7 19.636V6c0-.55.45-1 1-1h9c.55 0 1 .45 1 1v13.637l-5.162-3.668a.49.49 0 0 0-.676 0z" fill-rule="evenodd"/></svg></span></span><span class="button-activeState"><span class="svgIcon svgIcon--bookmarkFilled svgIcon--25px is-flushRight"><svg class="svgIcon-use" width="25" height="26" viewBox="0 0 25 26" ><path d="M19 7c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v14.66h.012c.01.103.045.204.12.285a.5.5 0 0 0 .706.03L12.5 17.85l5.662 4.126a.508.508 0 0 0 .708-.03.5.5 0 0 0 .118-.285H19V7z" fill-rule="evenodd"/></svg></span></span></button></div></div></div></div></div></div><div class="col u-size4of12 u-xs-size12of12 js-aboutCollectionBox u-marginTop30 u-minHeight250 u-xs-hide"></div></div></div></div></div><style class="js-collectionStyle">
.u-accentColor--borderLight {border-color: #02B875 !important;}
.u-accentColor--borderNormal {border-color: #02B875 !important;}
.u-accentColor--borderDark {border-color: #1C9963 !important;}
.u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #02B875 !important;}
.u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #02B875 !important;}
.u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #1C9963 !important;}
.u-accentColor--textNormal {color: #1C9963 !important;}
.u-accentColor--hoverTextNormal:hover {color: #1C9963 !important;}
.u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #1C9963 !important;}
.u-accentColor--textDark {color: #1C9963 !important;}
.u-accentColor--backgroundLight {background-color: #02B875 !important;}
.u-accentColor--backgroundNormal {background-color: #02B875 !important;}
.u-accentColor--backgroundDark {background-color: #1C9963 !important;}
.u-accentColor--buttonDark {border-color: #1C9963 !important; color: #1C9963 !important;}
.u-accentColor--buttonDark:hover {border-color: #1C9963 !important;}
.u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #1C9963 !important; fill: #1C9963 !important;}
.u-accentColor--buttonNormal {border-color: #02B875 !important; color: #1C9963 !important;}
.u-accentColor--buttonNormal:hover {border-color: #1C9963 !important;}
.u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #02B875 !important; fill: #02B875 !important;}
.u-accentColor--buttonNormal.button--filled .icon:before,.u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-accentColor--buttonDark.button--filled,.u-accentColor--buttonDark.button--withChrome.is-active,.u-accentColor--fillWhenActive.is-active {background-color: #1C9963 !important; border-color: #1C9963 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-accentColor--buttonNormal.button--filled,.u-accentColor--buttonNormal.button--withChrome.is-active {background-color: #02B875 !important; border-color: #02B875 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.postArticle.is-withAccentColors .markup--user,.postArticle.is-withAccentColors .markup--query {color: #1C9963 !important;}
.u-accentColor--highlightFaint {background-color: rgba(233, 253, 240, 1) !important;}
.u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(125, 255, 179, 1) !important;}
.postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(233, 253, 240, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(233, 253, 240, 1), rgba(233, 253, 240, 1));}
.postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(173, 255, 207, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(173, 255, 207, 1), rgba(173, 255, 207, 1));}
.postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(125, 255, 179, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(125, 255, 179, 1), rgba(125, 255, 179, 1));}
.postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(125, 255, 179, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(125, 255, 179, 1), rgba(125, 255, 179, 1));}
.postArticle.is-withAccentColors .markup--highlight {background-color: rgba(125, 255, 179, 1) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(125, 255, 179, 1), rgba(125, 255, 179, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);}
.u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;}
.u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;}
.u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);}
.u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);}
.u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);}
.u-imageSpectrum .svgIcon--logoNew path:nth-child(1) {stroke: none !important; fill: rgba(255, 255, 255, 0.4) !important;}
.u-imageSpectrum .svgIcon--logoNew path:nth-child(2) {stroke: none !important; fill: rgba(255, 255, 255, 0.4980392156862745) !important;}
.u-imageSpectrum .svgIcon--logoNew path:nth-child(3) {stroke: none !important; fill: rgba(255, 255, 255, 0.6980392156862745) !important;}
.u-imageSpectrum .svgIcon--logoNew path:nth-child(4) {stroke: none !important; fill: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;}
.u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;}
.u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;}
.u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .u-accentColor--buttonNormal.button--filled,.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;}
.u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;}
.u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;}
.u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}
.postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;}
body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;}
.u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;}
.u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;}
.u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;}
.u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;}
.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;}
.u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;}
.u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);}
.u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);}
.u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);}
.u-resetSpectrum .svgIcon--logoNew path:nth-child(1) {stroke: none !important; fill: rgba(0, 0, 0, 0.2) !important;}
.u-resetSpectrum .svgIcon--logoNew path:nth-child(2) {stroke: none !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;}
.u-resetSpectrum .svgIcon--logoNew path:nth-child(3) {stroke: none !important; fill: rgba(0, 0, 0, 0.4) !important;}
.u-resetSpectrum .svgIcon--logoNew path:nth-child(4) {stroke: none !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;}
.u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(2, 184, 117, 1) !important;}
.u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(2, 184, 117, 1) !important;}
.u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(2, 184, 117, 1) !important;}
.u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--textNormal {color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--textDark {color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(2, 184, 117, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(0, 171, 107, 1) !important; color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(28, 153, 99, 1) !important; fill: rgba(28, 153, 99, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal {border-color: rgba(2, 184, 117, 1) !important; color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(0, 171, 107, 1) !important; fill: rgba(0, 171, 107, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(28, 153, 99, 1) !important; border-color: rgba(28, 153, 99, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .u-accentColor--buttonNormal.button--filled,.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 171, 107, 1) !important; border-color: rgba(0, 171, 107, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;}
.u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(0, 171, 107, 1) !important;}</style><div class="js-collectionFooter u-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-borderTopLighter"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0"  href="https://medium.com/hacking-and-gonzo/about" title="About Hacking and Gonzo" aria-label="About Hacking and Gonzo">About Hacking and Gonzo</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"  href="https://medium.com/hacking-and-gonzo/latest" title="Latest Stories for Hacking and Gonzo" aria-label="Latest Stories for Hacking and Gonzo">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"  href="https://medium.com/hacking-and-gonzo/archive" title="Archive for Hacking and Gonzo" aria-label="Archive for Hacking and Gonzo">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"  href="https://about.medium.com">About Medium</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"  href="https://medium.com/policy/9db0094a1e0f">Terms</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block"  href="https://medium.com/policy/f03bf92035c9">Privacy</a></div></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[
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","buildLabel":"28557-aa39bef","currentUser":{"userId":"lo_65e10193bb66","isVerified":false,"subscriberEmail":""},"currentUserHasUnverifiedEmail":false,"isAuthenticated":false,"isCurrentUserVerified":false,"mediumTwitterScreenName":"medium","miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.te6HUn5RD7Dra4VG9smjOA.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.xUc_ufEk-kOKcUD-vLjFNA.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.rf1_CpaY5kio1HImMZxYEw.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.9hSnxKg7Pl0iR8uRPwY46g.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.7Sf-uMx8bwLxIbEnMsErXg.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.mlvEsshMM7accesuNi3aZQ.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.fDF1LsZ0jbq6mVlQ3kAvnw.js"},"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":false,"termsUrl":"//medium.com/policy/9db0094a1e0f","textshotHost":"textshot.medium.com","transactionId":"1492021415499:e968a8abf448","useragent":{"browser":"other","family":"","os":"","version":0,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","unknownParagraphsBad":false,"clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","signin_services":"twitter,facebook,google,email,google-fastidv","signup_services":"twitter,facebook,google,email,google-fastidv","android_rating_prompt_recommend_threshold":5,"google_sign_in_android":true,"enable_onboarding":true,"ios_custom_miro_url":"https://cdn-images-1.medium.com","reengagement_notification_duration":3,"enable_adsnative_integration":true,"browsable_stream_config_bucket":"curated-topics","ios_small_post_preview_truncation_length":5.5,"ios_large_post_preview_truncation_length":5.5,"disable_ios_catalog_badging":true,"enable_series_creation":true,"enable_your_series_pages":true,"enable_productionized_series":true,"enable_dedicated_series_tab_api_ios":true,"enable_clap_milestone_notifications":true,"enable_series_stats_page":true,"enable_prepublish_share_settings":true,"enable_direct_auth_connect":true,"enable_post_import":true,"enable_sponsored_post_labelling":true,"enable_logged_in_follow_on_collection_post":true,"promoted_story_placement_locations":"POST_PAGE_FOOTER","show_topics":true,"enable_search_collection_by_tag_recency_filter":true,"search_collection_by_tag_filter_min_votes":10,"enable_sms_app_promo":true,"enable_export_members":true,"enable_series_card_background_creation":true,"enable_onboarding_users_by_tag":true,"can_see_subscription_branding":true,"enable_subscriptions_landing_page":true,"enable_partner_program_landing_page":true,"enable_hide_broken_links":true,"enable_pay_for_custom_domain":true,"enable_promos_from_dynamo":true,"enable_promos_in_placement":true,"enable_series_promo_in_email":true,"enable_sms":true,"enable_series_in_user_profiles":true,"enable_new_logged_out_bento_operation":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","teamName":"Team Medium","fp":{"/icons/favicon.svg":"https://cdn-static-1.medium.com/_/fp/icons/favicon.KjTfUJo7yJH_fCoUzzH3cg.svg","/icons/favicon-dev-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-dev-editor.YKKRxBO8EMvIqhyCwIiJeQ.ico","/icons/favicon-hatch-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-hatch-editor.BuEyHIqlyh2s_XEk4Rl32Q.ico","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":true,"algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"UA-24232453-2","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.js","useDynamicCss":false,"faviconUrl":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium.TAS6uQ-Y7kcKgi0xjcYHXw.ico","faviconImageId":"1*W0nmth_X8nFKjn6BZ388UQ.png","fontSets":[{"id":1,"url":"https://cdn-static-1.medium.com/_/fp/css/fonts-base.by5Oi_VbnwEIvhnWIsuUjA.css"},{"id":4,"url":"https://cdn-static-1.medium.com/_/fp/css/fonts-lazy-base.g08Jj5TZPAiuPWj5YNUsSg.css"},{"id":6,"url":"https://cdn-static-1.medium.com/_/fp/css/fonts-latin-base.141WxxXgxGxNcfeza73H7Q.css"},{"id":7,"url":"https://cdn-static-1.medium.com/_/fp/css/fonts-lazy-latin-base.jMU532QDmysQMOINr-cr2A.css"}],"editorFaviconUrl":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.ico"},"authBaseUrlRev":"moc.muidem//:sptth","isDnt":false,"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"paymentData":{"currencies":{"1":{"label":"US Dollar","external":"usd"}},"countries":{"1":{"label":"United States of America","external":"US"}},"accountTypes":{"1":{"label":"Individual","external":"individual"},"2":{"label":"Company","external":"company"}}},"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","isSwBoot":false,"lightstep":{"accessToken":"ce5be895bef60919541332990ac9fef2","carrier":"{\"ot-tracer-spanid\":\"6e5c9557064bb9a9\",\"ot-tracer-traceid\":\"7d3ab35a568b7d1b\",\"ot-tracer-sampled\":\"true\"}","host":"collector-medium.lightstep.com"},"facebook":{"key":"542599432471018","secret":"c14df7146e9052a1131f3c900c1f0644","token":"542599432471018|1JqjIwxSfY9jOt_KwjWEl1R7T6I","namespace":"medium-com","scope":{"default":["public_profile","email","user_friends"],"connect":["public_profile","email","user_friends"],"login":["public_profile","email","user_friends"],"share":["public_profile","email","user_friends","publish_actions"]},"smartPublishWhitelistedPublications":["bcc38c8f6edf","f3726e2a5878","828a270689e","81c7d351c056","f30e42fd7ff8","8bf1d7d3081b","d16afa0ae7c","d8f3f6ad9c31","e74de0cedea9","15f753907972","c8c6a6b01ebd","3412b9729488","2ce4bbcf83bb","544c7006046e","7bfcdbc6b30a","a268fd916824","458a773bccd2"],"instantArticles":{"published":true,"developmentMode":false}},"mailingListArchiveUploadSizeMb":2,"availableMembershipPlans":[],"editorsPicksTopicId":"3985d2a191c5","popularOnMediumTopicId":"9d34e48ecf94","memberContentTopicId":"13d7efd82fb2","isDoNotAuth":false,"goldfinchUrl":"https://goldfinch.medium.com"}
// ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.te6HUn5RD7Dra4VG9smjOA.js" async></script><script>// <![CDATA[
window["obvInit"]({"references":{"Collection":{"9f8ed43c1aae":{"id":"9f8ed43c1aae","name":"Hacking and Gonzo","slug":"hacking-and-gonzo","tags":["DEVELOPMENT","STARTUPS","BUSINESS"],"creatorId":"bb7c4a93e2ee","description":"Hacking and startups. A publication by Amir Salihefendic.","shortDescription":"Hacking and startups. A publication by Amir Salihefendic.","image":{"imageId":"1*HIkyAnkBQwXdzOVavrPwKw.jpeg","filter":"","backgroundSize":"","originalWidth":1024,"originalHeight":1024,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":341,"postCount":6,"activeAt":1450233530441},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false},"isSubscribed":false,"isNewsletterSubscribed":false,"memberOfMembershipPlanId":""},"logo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"twitterUsername":"amix3k","sections":[{"type":2,"collectionHeaderMetadata":{"title":"Hacking and Gonzo","description":"Hacking and startups. A publication by Amir Salihefendic.","backgroundImage":{},"logoImage":{},"alignment":2,"layout":6}},{"type":1,"postListMetadata":{"source":1,"layout":6,"number":4,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":6,"number":10,"postIds":[],"sectionHeader":"Latest"}}],"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF02B875","point":0},{"color":"#FF00AB6B","point":0.1},{"color":"#FF1C9963","point":0.2},{"color":"#FF092E20","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFE9FDF0","point":0.1},{"color":"#FFE2FAEE","point":0.2},{"color":"#FFADFFCF","point":0.6},{"color":"#FF7DFFB3","point":1}],"backgroundColor":"#FFFFFFFF"}},"navItems":[],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"Hacking and Gonzo","description":"Hacking and startups. A publication by Amir Salihefendic.","backgroundImage":{},"logoImage":{},"alignment":2},"type":"Collection"}},"User":{"bb7c4a93e2ee":{"userId":"bb7c4a93e2ee","name":"Amir Salihefendic","username":"amix3k","createdAt":1367643923866,"lastPostCreatedAt":1484253304817,"imageId":"1*SRisQLFPniDfMx8j4WFO_Q.jpeg","backgroundImageId":"1*FNMTJAyd50NCeP3hDNuv0w.jpeg","bio":"Founder & CEO of Doist, the company behind @Todoist. Hacking and Gonzo.","twitterScreenName":"amix3k","facebookAccountId":"10152863630341906","allowNotes":1,"mediumMemberAt":0,"mediumMemberWaitlistedAt":0,"type":"User"}},"Post":{"44be43458ef6":{"id":"44be43458ef6","versionId":"314cf6f26d88","creatorId":"bb7c4a93e2ee","homeCollectionId":"9f8ed43c1aae","title":"bitmapist: Analytics and cohorts for Redis","detectedLanguage":"en","latestVersion":"314cf6f26d88","latestPublishedVersion":"314cf6f26d88","hasUnpublishedEdits":false,"latestRev":591,"createdAt":1450018321312,"updatedAt":1451543952963,"acceptedAt":0,"firstPublishedAt":1450233530230,"latestPublishedAt":1450233678876,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"In 2012 I released bitmapist, a powerful realtime analytics library that can help you answer following questions (for millions of users and…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*X5mNDldpp5MqhkNfM1BcPg.png","filter":"","backgroundSize":"","originalWidth":1000,"originalHeight":500,"strategy":"resample","height":0,"width":0},"wordCount":578,"imageCount":5,"readingTime":3.0144654088050316,"subtitle":"In 2012 I released bitmapist, a powerful realtime analytics library that can help you answer following questions (for millions of users and…","publishedInCount":1,"usersBySocialRecommends":[],"recommends":24,"isBookmarked":false,"tags":[{"slug":"analytics","name":"Analytics","postCount":6731,"virtuals":{"isFollowing":false},"metadata":{"followerCount":3125,"postCount":6731,"coverImage":{"id":"1*xzILVOWjZq9ReweYlODFsw.jpeg","originalWidth":4288,"originalHeight":2848}},"type":"Tag"},{"slug":"redis","name":"Redis","postCount":271,"virtuals":{"isFollowing":false},"metadata":{"followerCount":163,"postCount":271,"coverImage":{"id":"1*46XRc_OilBcGGOeSzuXl5Q.png","originalWidth":2544,"originalHeight":1012}},"type":"Tag"},{"slug":"python","name":"Python","postCount":4680,"virtuals":{"isFollowing":false},"metadata":{"followerCount":5743,"postCount":4680,"coverImage":{"id":"1*xHF26U0WHM9YuBWo9V7AAQ.jpeg","originalWidth":3840,"originalHeight":2560}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[],"version":"0.3","generatedAt":1471904122899},"isLockedPreviewOnly":false,"takeoverId":"","metaDescription":"","totalClapCount":0},"coverless":true,"slug":"bitmapist-analytics-and-cohorts-for-redis","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"bitmapist-analytics-and-cohorts-for-redis-44be43458ef6","previewContent":{"bodyModel":{"paragraphs":[{"name":"fabb","type":4,"text":"","markups":[],"layout":9,"metadata":{"id":"1*X5mNDldpp5MqhkNfM1BcPg.png","originalWidth":1000,"originalHeight":500}},{"name":"b536","type":3,"text":"bitmapist: Analytics and cohorts for Redis","markups":[],"alignment":1},{"name":"e2e1","type":1,"text":"In 2012 I released bitmapist, a powerful realtime analytics library that can help you…","markups":[{"type":3,"start":19,"end":28,"href":"https://github.com/Doist/bitmapist","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"9f8ed43c1aae","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"isSponsored":false,"isRequestToPubDisabled":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"type":"Post"},"180017c47fda":{"id":"180017c47fda","versionId":"f2ba8a452ef8","creatorId":"bb7c4a93e2ee","homeCollectionId":"9f8ed43c1aae","title":"Reactive vs. proactive development","detectedLanguage":"en","latestVersion":"f2ba8a452ef8","latestPublishedVersion":"f2ba8a452ef8","hasUnpublishedEdits":false,"latestRev":106,"createdAt":1449867037936,"updatedAt":1452848340142,"acceptedAt":0,"firstPublishedAt":1449868098257,"latestPublishedAt":1449868098257,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"It’s essential for good developers to switch between reactive and proactive modes.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"wordCount":187,"imageCount":0,"readingTime":0.7056603773584905,"subtitle":"It’s essential for good developers to switch between reactive and proactive modes.","publishedInCount":1,"usersBySocialRecommends":[],"recommends":28,"isBookmarked":false,"tags":[{"slug":"development","name":"Development","postCount":5787,"virtuals":{"isFollowing":false},"metadata":{"followerCount":1916,"postCount":5787,"coverImage":{"id":"1*2LF-zKjUzsRQciOgQwBCFg.png","originalWidth":750,"originalHeight":300}},"type":"Tag"},{"slug":"design-process","name":"Design Process","postCount":1684,"virtuals":{"isFollowing":false},"metadata":{"followerCount":1873,"postCount":1684,"coverImage":{"id":"1*_dWPmMFu8uh7yn-LpTNSMw.jpeg","originalWidth":2880,"originalHeight":1400}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[],"version":"0.3","generatedAt":1471926238148},"isLockedPreviewOnly":false,"takeoverId":"","metaDescription":"","totalClapCount":0},"coverless":true,"slug":"reactive-vs-proactive-development","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"http://amix.dk/blog/post/19352","importedPublishedAt":0,"visibility":0,"uniqueSlug":"reactive-vs-proactive-development-180017c47fda","previewContent":{"bodyModel":{"paragraphs":[{"name":"e4f6","type":3,"text":"Reactive vs. proactive development","markups":[],"alignment":1},{"name":"62be","type":1,"text":"It’s essential for good developers to switch between reactive and proactive modes.","markups":[],"alignment":1},{"name":"4018","type":1,"text":"The definition of reactive and proactive is as follows:","markups":[],"alignment":1},{"name":"9aec","type":9,"text":"Reactive: Reacting to the past rather than anticipating the future","markups":[{"type":3,"start":0,"end":8,"href":"http://en.wiktionary.org/wiki/reactive","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"9f8ed43c1aae","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"isSponsored":false,"isRequestToPubDisabled":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"type":"Post"},"6393842b3537":{"id":"6393842b3537","versionId":"76d1662d2e8e","creatorId":"bb7c4a93e2ee","homeCollectionId":"9f8ed43c1aae","title":"10 Vim tricks you should know","detectedLanguage":"en","latestVersion":"76d1662d2e8e","latestPublishedVersion":"76d1662d2e8e","hasUnpublishedEdits":false,"latestRev":194,"createdAt":1449684000069,"updatedAt":1450484115210,"acceptedAt":0,"firstPublishedAt":1449684600278,"latestPublishedAt":1449684898439,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Here are 10 Vim tips that I think you should know about.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*EV8LVTuU0xxhTiXQ_en09w.jpeg","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":600,"strategy":"resample","height":0,"width":0},"wordCount":406,"imageCount":1,"readingTime":1.7320754716981133,"subtitle":"Here are 10 Vim tips that I think you should know about.","publishedInCount":1,"usersBySocialRecommends":[],"recommends":90,"isBookmarked":false,"tags":[{"slug":"vim","name":"Vim","postCount":510,"virtuals":{"isFollowing":false},"metadata":{"followerCount":391,"postCount":510,"coverImage":{"id":"1*igOQlGeMea9zqEMteFeThQ.gif","originalWidth":806,"originalHeight":490}},"type":"Tag"},{"slug":"programming","name":"Programming","postCount":32214,"virtuals":{"isFollowing":false},"metadata":{"followerCount":38398,"postCount":32214,"coverImage":{"id":"1*mR7_k1mHMlsfc01qz-ZPiQ.png","originalWidth":8844,"originalHeight":4235}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":6,"links":{"entries":[],"version":"0.3","generatedAt":1469137900977},"isLockedPreviewOnly":false,"takeoverId":"","metaDescription":"","totalClapCount":0},"coverless":true,"slug":"10-vim-tricks-you-should-know","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"http://amix.dk/blog/post/19083","importedPublishedAt":0,"visibility":0,"uniqueSlug":"10-vim-tricks-you-should-know-6393842b3537","previewContent":{"bodyModel":{"paragraphs":[{"name":"7da6","type":4,"text":"","markups":[],"layout":10,"metadata":{"id":"1*EV8LVTuU0xxhTiXQ_en09w.jpeg","originalWidth":1500,"originalHeight":600}},{"name":"30d0","type":3,"text":"10 Vim tricks you should know","markups":[],"alignment":1},{"name":"fc58","type":1,"text":"Here are 10 Vim tips that I think you should know about.","markups":[],"alignment":1},{"name":"a314","type":13,"text":"The super star and…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"9f8ed43c1aae","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"isSponsored":false,"isRequestToPubDisabled":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"type":"Post"},"ef111e33d0d9":{"id":"ef111e33d0d9","versionId":"6b85308b3392","creatorId":"bb7c4a93e2ee","homeCollectionId":"9f8ed43c1aae","title":"How Reddit ranking algorithms work","detectedLanguage":"en","latestVersion":"6b85308b3392","latestPublishedVersion":"6b85308b3392","hasUnpublishedEdits":false,"latestRev":463,"createdAt":1449590085152,"updatedAt":1458385888340,"acceptedAt":0,"firstPublishedAt":1449593419988,"latestPublishedAt":1458385888340,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"This is a follow up post to How Hacker News ranking algorithm works. This time around I will examine how Reddit’s story and comment…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*jBLUG0RQb34y_q5taxxUkQ.jpeg","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":600,"strategy":"resample","height":0,"width":0},"wordCount":1268,"imageCount":8,"readingTime":5.918238993710691,"subtitle":"This is a follow up post to How Hacker News ranking algorithm works. This time around I will examine how Reddit’s story and comment…","publishedInCount":1,"usersBySocialRecommends":[],"recommends":274,"isBookmarked":false,"tags":[{"slug":"reddit","name":"Reddit","postCount":2633,"virtuals":{"isFollowing":false},"metadata":{"followerCount":635,"postCount":2633,"coverImage":{"id":"1*fy-aM-nXbc-Li3YAGOyW-Q.gif","originalWidth":1000,"originalHeight":1000,"isFeatured":true}},"type":"Tag"},{"slug":"algorithms","name":"Algorithms","postCount":2273,"virtuals":{"isFollowing":false},"metadata":{"followerCount":1618,"postCount":2273,"coverImage":{"id":"1*Uj6aoAZuTXrVZFn-yiUeLQ.jpeg","originalWidth":1024,"originalHeight":685}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":24,"links":{"entries":[{"url":"https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d","alts":[{"type":2,"url":"medium://p/1d9b0cf2c08d"},{"type":3,"url":"medium://p/1d9b0cf2c08d"}]},{"url":"http://amix.dk/blog/post/19588","alts":[{"type":3,"url":"medium://p/ef111e33d0d9"},{"type":2,"url":"medium://p/ef111e33d0d9"}]}],"version":"0.3","generatedAt":1471910669566},"isLockedPreviewOnly":false,"takeoverId":"","metaDescription":"","totalClapCount":0},"coverless":true,"slug":"how-reddit-ranking-algorithms-work","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"http://amix.dk/blog/post/19588","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-reddit-ranking-algorithms-work-ef111e33d0d9","previewContent":{"bodyModel":{"paragraphs":[{"name":"7c44","type":4,"text":"","markups":[],"layout":10,"metadata":{"id":"1*jBLUG0RQb34y_q5taxxUkQ.jpeg","originalWidth":1500,"originalHeight":600}},{"name":"1131","type":3,"text":"How Reddit ranking algorithms work","markups":[],"alignment":1},{"name":"c431","type":1,"text":"This is a follow up post to How Hacker News ranking algorithm works. This time around I will…","markups":[{"type":3,"start":28,"end":67,"href":"https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"9f8ed43c1aae","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"isSponsored":false,"isRequestToPubDisabled":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"type":"Post"},"1d9b0cf2c08d":{"id":"1d9b0cf2c08d","versionId":"cf724740d43c","creatorId":"bb7c4a93e2ee","homeCollectionId":"9f8ed43c1aae","title":"How Hacker News ranking algorithm works","detectedLanguage":"en","latestVersion":"cf724740d43c","latestPublishedVersion":"cf724740d43c","hasUnpublishedEdits":false,"latestRev":181,"createdAt":1449592189047,"updatedAt":1451290936873,"acceptedAt":0,"firstPublishedAt":1449592480575,"latestPublishedAt":1449626808409,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"In this post I’ll try to explain how the Hacker News ranking algorithm works and how you can reuse it in your own applications. It’s a very…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*fHYfF7gvyTv-RkQngRvfIg.jpeg","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":600,"strategy":"resample","height":0,"width":0},"wordCount":598,"imageCount":3,"readingTime":2.8066037735849054,"subtitle":"In this post I’ll try to explain how the Hacker News ranking algorithm works and how you can reuse it in your own applications. It’s a very…","publishedInCount":1,"usersBySocialRecommends":[],"recommends":116,"isBookmarked":false,"tags":[{"slug":"hacker-news","name":"Hacker News","postCount":457,"virtuals":{"isFollowing":false},"metadata":{"followerCount":34,"postCount":457,"coverImage":{"id":"1*oC8ZwldQcajBQ4dY4Q1mJg.png","originalWidth":955,"originalHeight":287}},"type":"Tag"},{"slug":"algorithms","name":"Algorithms","postCount":2273,"virtuals":{"isFollowing":false},"metadata":{"followerCount":1618,"postCount":2273,"coverImage":{"id":"1*Uj6aoAZuTXrVZFn-yiUeLQ.jpeg","originalWidth":1024,"originalHeight":685}},"type":"Tag"},{"slug":"rankings","name":"Rankings","postCount":465,"virtuals":{"isFollowing":false},"metadata":{"followerCount":3,"postCount":465,"coverImage":{"id":"1*EiK06IscifKlD1IKTHmakg.jpeg","originalWidth":375,"originalHeight":448}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":3,"links":{"entries":[{"url":"http://amix.dk/blog/post/19574","alts":[{"type":2,"url":"medium://p/1d9b0cf2c08d"},{"type":3,"url":"medium://p/1d9b0cf2c08d"}]}],"version":"0.3","generatedAt":1471922526558},"isLockedPreviewOnly":false,"takeoverId":"","metaDescription":"","totalClapCount":0},"coverless":true,"slug":"how-hacker-news-ranking-algorithm-works","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"http://amix.dk/blog/post/19574","importedPublishedAt":0,"visibility":0,"uniqueSlug":"how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d","previewContent":{"bodyModel":{"paragraphs":[{"name":"5f67","type":4,"text":"","markups":[],"layout":10,"metadata":{"id":"1*fHYfF7gvyTv-RkQngRvfIg.jpeg","originalWidth":1500,"originalHeight":600}},{"name":"a9d9","type":3,"text":"How Hacker News ranking algorithm works","markups":[],"alignment":1},{"name":"3fe9","type":1,"text":"In this post I’ll try to explain how the Hacker News ranking algorithm works and how you…","markups":[{"type":3,"start":41,"end":52,"href":"http://news.ycombinator.com/","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"9f8ed43c1aae","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"isSponsored":false,"isRequestToPubDisabled":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"type":"Post"},"57b28c0f71b7":{"id":"57b28c0f71b7","versionId":"961a89e11e01","creatorId":"bb7c4a93e2ee","homeCollectionId":"9f8ed43c1aae","title":"Flux vs. MVC (Design Patterns)","detectedLanguage":"en","latestVersion":"961a89e11e01","latestPublishedVersion":"961a89e11e01","hasUnpublishedEdits":false,"latestRev":1113,"createdAt":1423434421604,"updatedAt":1449626913321,"acceptedAt":0,"firstPublishedAt":1423526036759,"latestPublishedAt":1449626913321,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A look at how Facebook’s Flux pattern solves things differently.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*mEBWQ8ZQYIMe5xE_DiCgTA.jpeg","filter":"","backgroundSize":"","originalWidth":1500,"originalHeight":600,"strategy":"resample","height":0,"width":0},"wordCount":956,"imageCount":5,"readingTime":4.440880503144654,"subtitle":"A look at how Facebook’s Flux pattern solves things differently.","publishedInCount":1,"usersBySocialRecommends":[],"recommends":128,"isBookmarked":false,"tags":[{"slug":"development","name":"Development","postCount":5787,"virtuals":{"isFollowing":false},"metadata":{"followerCount":1916,"postCount":5787,"coverImage":{"id":"1*2LF-zKjUzsRQciOgQwBCFg.png","originalWidth":750,"originalHeight":300}},"type":"Tag"},{"slug":"design-patterns","name":"Design Patterns","postCount":650,"virtuals":{"isFollowing":false},"metadata":{"followerCount":604,"postCount":650,"coverImage":{"id":"1*1Z5wcXeAnGp6qmRr2OfqjA.jpeg","originalWidth":4099,"originalHeight":2733}},"type":"Tag"},{"slug":"javascript","name":"JavaScript","postCount":30832,"virtuals":{"isFollowing":false},"metadata":{"followerCount":31963,"postCount":30832,"coverImage":{"id":"1*mR7_k1mHMlsfc01qz-ZPiQ.png","originalWidth":8844,"originalHeight":4235}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":11,"links":{"entries":[{"url":"http://amix.dk/blog/post/19615","alts":[{"type":2,"url":"medium://p/57b28c0f71b7"},{"type":3,"url":"medium://p/57b28c0f71b7"}]}],"version":"0.3","generatedAt":1471905348993},"isLockedPreviewOnly":false,"takeoverId":"","metaDescription":"","totalClapCount":0},"coverless":true,"slug":"flux-vs-mvc-design-patterns","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"flux-vs-mvc-design-patterns-57b28c0f71b7","previewContent":{"bodyModel":{"paragraphs":[{"name":"8f25","type":4,"text":"","markups":[],"layout":10,"metadata":{"id":"1*mEBWQ8ZQYIMe5xE_DiCgTA.jpeg","originalWidth":1500,"originalHeight":600}},{"name":"098a","type":2,"text":"Flux vs. MVC (Design Patterns)","markups":[],"alignment":1},{"name":"c633","type":1,"text":"A look at how Facebook’s Flux pattern solves things differently, especially in relation to the Model-View…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"9f8ed43c1aae","newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"isSponsored":false,"isRequestToPubDisabled":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"type":"Post"}}},"paging":{"path":"/_/api/collections/9f8ed43c1aae/stream","next":{"to":"1423526036759","ignoredIds":[],"page":3}},"collection":{"id":"9f8ed43c1aae","name":"Hacking and Gonzo","slug":"hacking-and-gonzo","tags":["DEVELOPMENT","STARTUPS","BUSINESS"],"creatorId":"bb7c4a93e2ee","description":"Hacking and startups. A publication by Amir Salihefendic.","shortDescription":"Hacking and startups. A publication by Amir Salihefendic.","image":{"imageId":"1*HIkyAnkBQwXdzOVavrPwKw.jpeg","filter":"","backgroundSize":"","originalWidth":1024,"originalHeight":1024,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":341,"postCount":6,"activeAt":1450233530441},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false},"isSubscribed":false,"isNewsletterSubscribed":false,"memberOfMembershipPlanId":""},"logo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"twitterUsername":"amix3k","sections":[{"type":2,"collectionHeaderMetadata":{"title":"Hacking and Gonzo","description":"Hacking and startups. A publication by Amir Salihefendic.","backgroundImage":{},"logoImage":{},"alignment":2,"layout":6}},{"type":1,"postListMetadata":{"source":1,"layout":6,"number":4,"postIds":["44be43458ef6","180017c47fda","6393842b3537","ef111e33d0d9"]}},{"type":1,"postListMetadata":{"source":1,"layout":6,"number":10,"postIds":["1d9b0cf2c08d","57b28c0f71b7"],"sectionHeader":"Latest"}}],"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF02B875","point":0},{"color":"#FF00AB6B","point":0.1},{"color":"#FF1C9963","point":0.2},{"color":"#FF092E20","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFE9FDF0","point":0.1},{"color":"#FFE2FAEE","point":0.2},{"color":"#FFADFFCF","point":0.6},{"color":"#FF7DFFB3","point":1}],"backgroundColor":"#FFFFFFFF"}},"navItems":[],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"Hacking and Gonzo","description":"Hacking and startups. A publication by Amir Salihefendic.","backgroundImage":{},"logoImage":{},"alignment":2},"type":"Collection"},"header":{"title":"Hacking and Gonzo","description":"Hacking and startups. A publication by Amir Salihefendic.","backgroundImage":{},"logoImage":{},"alignment":2},"streamItems":[{"createdAt":1492021415605,"randomId":"d045abb027d4","section":{"items":[{"post":{"postId":"44be43458ef6"},"itemType":"post"},{"post":{"postId":"180017c47fda"},"itemType":"post"},{"post":{"postId":"6393842b3537"},"itemType":"post"},{"post":{"postId":"ef111e33d0d9"},"itemType":"post"}],"layout":6},"itemType":"section","type":"StreamItem"},{"createdAt":1492021415606,"randomId":"929aaaed091c","section":{"items":[{"post":{"postId":"1d9b0cf2c08d"},"itemType":"post"},{"post":{"postId":"57b28c0f71b7"},"itemType":"post"}],"layout":6,"heading":{"fallbackTitle":"Latest","headingBasic":{"title":"Latest"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"}]})
// ]]></script></body></html>