UNPKG

unfluff

Version:
1,594 lines (1,122 loc) 199 kB
<!DOCTYPE html> <!--[if IE 8]><html class="lt-ie10 ie8" lang="en" data-scribe-reduced-action-queue="true"><![endif]--> <!--[if IE 9]><html class="lt-ie10 ie9" lang="en" data-scribe-reduced-action-queue="true"><![endif]--> <!--[if gt IE 9]><!--><html lang="en" data-scribe-reduced-action-queue="true"><!--<![endif]--> <head> <meta charset="utf-8"> <script id="swift_action_queue" nonce="Hl/anQUQToJr2+QlkMXBOw=="> (function(){function m(a){a||(a=window.event);if(!a)return!1;a.timestamp=(new Date).getTime();!a.target&&a.srcElement&&(a.target=a.srcElement);if(document.documentElement.getAttribute("data-scribe-reduced-action-queue")){var b=a.target;while(b&&b!=document .body){if(b.tagName=="A")return;b=b.parentNode}}r("all",s(a));if(!q(a)){r("direct",a);return!0}document.addEventListener||(a=s(a));a.preventDefault=a.stopPropagation=a.stopImmediatePropagation=function(){};if(i){f.push(a);r("captured",a)}else r("ignored",a );return!1}function n($){p();for(var a=0,b;b=f[a];a++){var d=$(b.target),e=d.closest("a")[0];if(b.type=="click"&&e){var g=$.data(e,"events"),i=g&&g.click,j=!e.hostname.match(c)||!e.href.match(/#$/);if(!i&&j){window.location=e.href;continue}}d.trigger($.event .fix(b))}window.swiftActionQueue.wasFlushed=!0}function o(){for(var a in j){if(a=="all")continue;var b=j[a];for(var c=0;c<b.length;c++)console.log("actionQueue",u(b[c]))}}function p(){clearTimeout(g);for(var a=0,b;b=e[a];a++)document["on"+b]=null}function q (a){if(!a.target)return!1;var b=a.target,e=(b.tagName||"").toLowerCase();if(a.metaKey)return!1;if(a.shiftKey&&e=="a")return!1;if(b.hostname&&!b.hostname.match(c))return!1;if(a.type.match(d)&&w(b))return!1;if(e=="label"){var f=b.getAttribute("for");if(f){var g= document.getElementById(f);if(g&&v(g))return!1}else for(var i=0,j;j=b.childNodes[i];i++)if(v(j))return!1}return!0}function r(a,b){b.bucket=a;j[a].push(b)}function s(a){var b={};for(var c in a)b[c]=a[c];return b}function t(a){while(a&&a!=document.body){if(a .tagName=="A")return a;a=a.parentNode}}function u(b){var c=[];b.bucket&&c.push("["+b.bucket+"]");c.push(b.type);var d=b.target,e=t(d),f="",g,i,j=b.timestamp&&b.timestamp-a;if(b.type==="click"&&e){g=e.className.trim().replace(/\s+/g,".");i=e.id.trim();f=/[^#]$/ .test(e.href)?" ("+e.href+")":"";d='"'+e.innerText.replace(/\n+/g," ").trim()+'"'}else{g=d.className.trim().replace(/\s+/g,".");i=d.id.trim();d=d.tagName.toLowerCase();b.keyCode&&(d=String.fromCharCode(b.keyCode)+" : "+d)}c.push(d+f+(i&&"#"+i)+(!i&&g?"."+g :""));j&&c.push(j);return c.join(" ")}function v(a){var b=(a.tagName||"").toLowerCase();return b=="input"&&a.getAttribute("type")=="checkbox"}function w(a){var b=(a.tagName||"").toLowerCase();return b=="textarea"||b=="input"&&a.getAttribute("type")=="text"|| a.getAttribute("contenteditable")=="true"}var a=(new Date).getTime(),b=1e4,c=/^([^\.]+\.)*twitter\.com$/,d=/^key/,e=["click","keydown","keypress","keyup"],f=[],g=null,i=!0,j={captured:[],ignored:[],direct:[],all:[]};for(var k=0,l;l=e[k];k++)document["on"+l ]=m;g=setTimeout(function(){i=!1},b);window.swiftActionQueue={buckets:j,flush:n,logActions:o,wasFlushed:!1}})(); </script> <script id="composition_state" nonce="Hl/anQUQToJr2+QlkMXBOw=="> (function(){function a(a){a.target.setAttribute("data-in-composition","true")}function b(a){a.target.removeAttribute("data-in-composition")}if(document.addEventListener){document.addEventListener("compositionstart",a,!1);document.addEventListener("compositionend" ,b,!1)}})(); </script> <link rel="stylesheet" href="https://abs.twimg.com/a/1434379534/css/t1/twitter_core.bundle.css"> <title>GitHub on Twitter: &quot;Check out the full list of @codeconf sessions and grab your ticket now! See you in Nashville in 2 weeks: http://t.co/9mynYt0VPc&quot;</title> <meta name="msapplication-TileImage" content="//abs.twimg.com/favicons/win8-tile-144.png"/> <meta name="msapplication-TileColor" content="#00aced"/> <link rel="icon" sizes="any" mask href="https://abs.twimg.com/a/1434379534/img/t1/favicon.svg"> <meta name="theme-color" content="#55acee"> <link href="//abs.twimg.com/favicons/favicon.ico" rel="shortcut icon" type="image/x-icon"> <meta name="swift-page-name" id="swift-page-name" content="permalink"> <link rel="canonical" href="https://twitter.com/github/status/609116267891580928"> <link rel="alternate" type="application/json+oembed" href="https://api.twitter.com/1/statuses/oembed.json?id=609116267891580928" title="GitHub on Twitter: &quot;Check out the full list of @codeconf sessions and grab your ticket now! See you in Nashville in 2 weeks: http://t.co/9mynYt0VPc&quot;"> <link rel="alternate" type="text/xml+oembed" href="https://api.twitter.com/1/statuses/oembed.xml?id=609116267891580928" title="GitHub on Twitter: &quot;Check out the full list of @codeconf sessions and grab your ticket now! See you in Nashville in 2 weeks: http://t.co/9mynYt0VPc&quot;"> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Twitter"> <link rel="stylesheet" href="https://abs.twimg.com/a/1434379534/css/t1/twitter_more_1.bundle.css"> <link rel="stylesheet" href="https://abs.twimg.com/a/1434379534/css/t1/twitter_more_2.bundle.css"> <style id="user-style-github"> a, a:hover, a:focus, a:active { color: #0084B4; } .u-textUserColor, .u-textUserColorHover:hover, .u-textUserColorHover:focus { color: #0084B4 !important; } .u-borderUserColor, .u-borderUserColorHover:hover, .u-borderUserColorHover:focus { border-color: #0084B4 !important; } .u-bgUserColor, .u-bgUserColorHover:hover, .u-bgUserColorHover:focus { background-color: #0084B4 !important; } .u-boxShadowInsetUserColorHover:hover, .u-boxShadowInsetUserColorHover:focus { box-shadow: inset 0 0 0 5px #0084B4 !important; } .u-textUserColorLight { color: #99CDE1 !important; } .u-borderUserColorLight, .u-borderUserColorLightFocus:focus, .u-borderUserColorLightHover:hover, .u-borderUserColorLightHover:focus { border-color: #99CDE1 !important; } .u-bgUserColorLight { background-color: #99CDE1 !important; } .u-boxShadowUserColorLighterFocus:focus { box-shadow: 0 0 8px rgba(0, 0, 0, 0.05), inset 0 1px 2px rgba(0,132,180,0.25) !important; } .u-textUserColorLightest { color: #E5F2F7 !important; } .u-borderUserColorLightest { border-color: #E5F2F7 !important; } .u-bgUserColorLightest { background-color: #E5F2F7 !important; } .u-textUserColorLighter { color: #BFE0EC !important; } .u-borderUserColorLighter { border-color: #BFE0EC !important; } .u-bgUserColorLighter { background-color: #BFE0EC !important; } .u-bgUserColorDarkHover:hover { background-color: #006990 !important; } .u-borderUserColorDark { border-color: #006990 !important; } .u-bgUserColorDarkerActive:active { background-color: #004F6C !important; } a, .btn-link, .btn-link:focus, .icon-btn, .pretty-link b, .pretty-link:hover s, .pretty-link:hover b, .pretty-link:focus s, .pretty-link:focus b, /* Account Group */ .metadata a:hover, .metadata a:focus, .account-group:hover .fullname, .account-group:focus .fullname, .account-summary:focus .fullname, .message .message-text a, .stats a strong, .plain-btn:hover, .plain-btn:focus, .dropdown.open .user-dropdown.plain-btn, .open > .plain-btn, #global-actions .new:before, .module .list-link:hover, .module .list-link:focus, .UserCompletion-step:hover, .stats a:hover, .stats a:hover strong, .stats a:focus, .stats a:focus strong, .profile-modal-header .fullname a:hover, .profile-modal-header .username a:hover, .profile-modal-header .fullname a:focus, .profile-modal-header .username a:focus, .story-article:hover .metadata, .story-article .metadata a:focus, .find-friends-sources li:hover .source, .stream-item a:hover .fullname, .stream-item a:focus .fullname, .stream-item .view-all-supplements:hover, .stream-item .view-all-supplements:focus, .tweet .time a:hover, .tweet .time a:focus, .tweet .details.with-icn b, .tweet .details.with-icn .Icon, .tweet .tweet-geo-text a:hover, .stream-item:hover .original-tweet .details b, .stream-item .original-tweet.focus .details b, .stream-item.open .original-tweet .details b, .simple-tweet:hover .details b, .simple-tweet.focus .details b, .simple-tweet.open .details b, .simple-tweet:hover .details .simple-details-link, .simple-tweet.focus .details .simple-details-link, .client-and-actions a:hover, .client-and-actions a:focus, .dismiss-promoted:hover b, .tweet .context .pretty-link:hover s, .tweet .context .pretty-link:hover b, .tweet .context .pretty-link:focus s, .tweet .context .pretty-link:focus b, .list .username a:hover, .list .username a:focus, .list-membership-container .create-a-list, .list-membership-container .create-a-list:hover, .story-header:hover .view-tweets, .card .list-details a:hover, .card .list-details a:focus, .card .card-body:hover .attribution, .card .card-body .attribution:focus, .events-card .card-body:hover .attribution, .events-card .card-body .attribution:focus, .new-tweets-bar, .onebox .soccer ul.ticker a:hover, .onebox .soccer ul.ticker a:focus, .discover-item-actions a, .remove-background-btn, .stream-item-activity-notification .latest-tweet .tweet-row a:hover, .stream-item-activity-notification .latest-tweet .tweet-row a:focus, .stream-item-activity-notification .latest-tweet .tweet-row a:hover b, .stream-item-activity-notification .latest-tweet .tweet-row a:focus b { color: #0084B4; } #global-actions > li > a { border-bottom-color: #0084B4; } #global-actions > li:hover > a, #global-actions > li > a:focus, .nav.right-actions > li > a:hover, .nav.right-actions > li > button:hover, .nav.right-actions > li > a:focus, .nav.right-actions > li > button:focus { color: #0084B4; } /* Surpress the new connect glow if in experiment. */ #global-actions .people.new:before { content: none; } /* hover state for photo select button*/ .photo-selector:hover .btn, .icon-btn:hover, .icon-btn:active, .icon-btn.active, .icon-btn.enabled { border-color: #0084B4; border-color: rgba(0,132,180,.5); color: #0084B4; } /* hover state for photo select button*/ .photo-selector:hover .btn, .icon-btn:hover { background-image: linear-gradient(rgba(255,255,255,0), rgba(0,132,180,.1)); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00FFFFFF', endColorstr='#190084B4'); /* IE8-9 */ } .icon-btn.disabled, .icon-btn.disabled:hover, .icon-btn[disabled], .icon-btn[aria-disabled=true] { color: #0084B4; } /* tweet-btn can have primary-btn class as well so the following rules ensure that the correct background color is applied */ .tweet-btn, .tweet-btn:focus { background-color: #0084B4; background: rgba(0,132,180,.8); } .tweet-btn:hover, .tweet-btn:active, .tweet-btn.active { background-color: #0084B4; } .tweet-btn.btn.disabled, .tweet-btn.btn.disabled:hover, .tweet-btn.btn[disabled], .tweet-btn.btn[aria-disabled=true] { background: #0084B4; } .btn:focus, .btn.focus, .Button:focus { box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(0, 132, 180, 0.5); } .selected-stream-item:focus { box-shadow: 0 0 0 3px rgba(0, 132, 180, 0.5); } /* highlighting when navigate through timeline stream table view with j & k. */ .js-navigable-stream.stream-table-view .selected-stream-item[tabindex="-1"]:focus { outline: 3px solid rgba(0, 132, 180, 0.5) !important; } /* box-shadow does not work with table tr element */ .js-navigable-stream.stream-table-view .selected-stream-item:focus { box-shadow: none; } /** * 1. Bring actionable tweet to top when active to ensure border * highlighting wraps entire tweet. Value must be at least at if not * higher than the z-index value of ProfileHeading to ensure first * tweet in timeline receives border on all four sides. * NOTE: z-index should be 2 to avoid conflicts with .ProfileCanopy and .ProfileCard-avatarLink */ .ProfileTweet.is-actionable, .js-stream-item.is-selected:focus .ProfileTweet, .js-stream-item.is-selected:focus .ProfileCard, .QuoteTweet:hover, .QuoteTweet:focus, .QuoteTweet:active { border-color: rgba(0, 132, 180, 0.5); z-index: 2; /* 1 */ } .global-dm-nav.new.with-count .dm-new { background: #fff; } .global-dm-nav.new.with-count .dm-new .count-inner { background: #0084B4; } .global-nav .people .count .count-inner { background: #0084B4; } .dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-menu .dropdown-link:hover, .dropdown-menu .dropdown-link:focus, .dropdown-menu .dropdown-link.is-focused, .dropdown-menu li:hover .dropdown-link, .dropdown-menu li:focus .dropdown-link, .dropdown-menu .typeahead-recent-search-item.selected, .dropdown-menu .typeahead-saved-search-item.selected, .dropdown-menu .selected a, .dropdown-menu .dropdown-link.selected { background-color: #0084B4 !important; } /* give tweet boxes 10% of the users link color as background */ .home-tweet-box, .dm-tweetbox, .RetweetDialog-commentBox, .WebToast-box--altColor, .content-main .conversations-enabled .expansion-container .inline-reply-tweetbox { background-color: #E5F2F7; } .conversations-enabled .inline-reply-caret .caret-inner { border-bottom-color: #E5F2F7; } .top-timeline-tweetbox .timeline-tweet-box .tweet-form.condensed .tweet-box { color: #0084B4; } /* give tweet box containers an outline using the users link color */ .home-tweet-box, .top-timeline-tweetbox .timeline-tweet-box { border-color: #BFE0EC !important; } /* give tweet boxes an outline using the users link color */ .tweet-box[contenteditable="true"] { border-color: rgba(0,132,180,0.25); } input:focus, textarea:focus, div[contenteditable="true"]:focus, div[contenteditable="true"].fake-focus { border-color: #66B5D2; box-shadow: inset 0 0 0 1px rgba(0, 132, 180, 0.7); } .currently-dragging.modal-enabled .modal .tweet-box, .currently-dragging:not(.modal-enabled) .tweet-content .tweet-box, .tweet-box[contenteditable="true"]:focus { border-color: #99CDE1; box-shadow: none; } s, .pretty-link:hover s, .pretty-link:focus s, .stream-item-activity-notification .latest-tweet .tweet-row a:hover s, .stream-item-activity-notification .latest-tweet .tweet-row a:focus s { color: #66B5D2; } .vellip, .vellip:before, .vellip:after, .conversation-module > li:after, .conversation-module > li:before, .ThreadedConversation-tweet ~ .ThreadedConversation-tweet:before, .ThreadedConversation-tweet:after, .ThreadedConversation-viewOther:before, .ThreadedConversation-unavailableTweet:before, .ThreadedConversation-unavailableTweet:after { background-color: #66B5D2; } .tweet .sm-reply, .tweet .sm-rt, .tweet .sm-fav, .tweet .sm-image, .tweet .sm-video, .tweet .sm-audio, .tweet .sm-geo, .tweet .sm-in, .tweet .sm-trash, .tweet .sm-more, .tweet .sm-page, .tweet .sm-embed, .tweet .sm-summary, .tweet .sm-chat, .timelines-navigation .active .profile-nav-icon, .timelines-navigation .profile-nav-icon:hover, .timelines-navigation .profile-nav-link:focus .profile-nav-icon, .sm-top-tweet, .metadata a.tweet-geo-text:hover .sm-geo, .discover-item .js-action-card-search:hover .sm-search, .discover-item .js-action-card-search:focus .sm-search { background-color: #0084B4; } .enhanced-mini-profile .mini-profile .profile-summary { background-image: url(https://pbs.twimg.com/profile_banners/8515852/1387499636/mobile); } .wrapper-profile .profile-card.profile-header .profile-header-inner { background-image: url(https://pbs.twimg.com/profile_banners/8515852/1387499636/web); } #global-tweet-dialog .modal-header { border-bottom: solid 1px rgba(0, 132, 180, .25); } #global-tweet-dialog .modal-tweet-form-container { background-color: #0084B4; background: rgba(0, 132, 180, .1); } .inline-reply-tweetbox { background-color: #E5F2F7; } </style> <style id="user-style-ageitgey-bg-img" class="js-user-style-bg-img"> body.user-style-ageitgey { background-image: url(https://abs.twimg.com/images/themes/theme1/bg.png); background-position: left 46px; background-attachment: fixed; background-repeat: repeat; background-repeat: no-repeat; background-color: #C0DEED; } </style> <style id="user-style-ageitgey-header-img" class="js-user-style-header-img"> body.user-style-ageitgey .enhanced-mini-profile .mini-profile .profile-summary { background-image: url(https://pbs.twimg.com/profile_banners/8515852/1387499636/web); } body.user-style-ageitgey .wrapper-profile .profile-card.profile-header .profile-header-inner { background-image: url(https://pbs.twimg.com/profile_banners/8515852/1387499636/web); } .DashboardProfileCard-bg { background-image: url(https://pbs.twimg.com/profile_banners/8515852/1387499636/600x200); } body.user-style-ageitgey .profile-canopy .bg-img { background-image: url(https://pbs.twimg.com/profile_banners/8515852/1387499636/web_retina); } </style> <meta property="og:type" content="article"> <meta property="og:url" content="https://twitter.com/github/status/609116267891580928"> <meta property="og:title" content="GitHub on Twitter"> <meta property="og:image" content="https://pbs.twimg.com/profile_images/426158315781881856/sBsvBbjY_400x400.png"> <meta property="og:description" content="“Check out the full list of @codeconf sessions and grab your ticket now! See you in Nashville in 2 weeks: http://t.co/9mynYt0VPc”"> <meta property="og:site_name" content="Twitter"> <meta property="fb:app_id" content="2231777543"> </head> <body class="three-col logged-in user-style-github" data-fouc-class-names="swift-loading" dir="ltr"> <script id="swift_loading_indicator" nonce="Hl/anQUQToJr2+QlkMXBOw=="> document.body.className=document.body.className+" "+document.body.getAttribute("data-fouc-class-names"); </script> <div id="doc" class="route-permalink"> <div class="topbar js-topbar"> <div class="ProfilePage-editingOverlay"></div> <div class="global-nav" data-section-term="top_nav"> <div class="global-nav-inner"> <div class="container"> <h1 class="Icon Icon--bird bird-topbar-etched" style="display: inline-block; width: 24px; height: 21px;"> <span class="visuallyhidden">Twitter</span> </h1> <div role="navigation" style="display: inline-block;"><ul class="nav js-global-actions" id="global-actions"><li id="global-nav-home" class="home" data-global-action="home"> <a class="js-nav js-tooltip js-dynamic-tooltip" data-placement="bottom" href="/" data-component-term="home_nav" data-nav="home"> <span class="Icon Icon--home Icon--large"></span> <span class="text">Home</span> </a> </li><li class="people notifications" data-global-action="connect"> <a class="js-nav js-tooltip js-dynamic-tooltip" data-placement="bottom" href="/i/notifications" data-component-term="connect_nav" data-nav="connect"> <span class="Icon Icon--notifications Icon--large"></span> <span class="text">Notifications</span> <span class="count"> <span class="count-inner">0</span> </span> </a> </li><li class="dm-nav"> <a role="button" href="#" class="js-tooltip js-dynamic-tooltip global-dm-nav" data-placement="bottom"> <span class="Icon Icon--dm Icon--large"></span> <span class="text">Messages</span> <span class="dm-new"><span class="count-inner"></span></span> </a> </li></ul> </div> <div class="pull-right" style="display: inline-block;"><div role="search"> <form class="t1-form form-search js-search-form" action="/search" id="global-nav-search"> <label class="visuallyhidden" for="search-query">Search query</label> <input class="search-input" type="text" id="search-query" placeholder="Search Twitter" name="q" autocomplete="off" spellcheck="false"> <span class="search-icon js-search-action"> <button type="submit" class="Icon Icon--search nav-search"> <span class="visuallyhidden">Search Twitter</span> </button> </span> <div role="listbox" class="dropdown-menu typeahead"> <div aria-hidden="true" class="dropdown-caret"> <div class="caret-outer"></div> <div class="caret-inner"></div> </div> <div role="presentation" class="dropdown-inner js-typeahead-results"> <div role="presentation" class="typeahead-recent-searches"> <h3 id="recent-searches-heading" class="typeahead-category-title recent-searches-title">Recent searches</h3><button type="button" tabindex="-1" class="btn-link clear-recent-searches">Clear All</button> <ul role="presentation" class="typeahead-items recent-searches-list"> <li role="presentation" class="typeahead-item typeahead-recent-search-item"> <span class="Icon Icon--close" aria-hidden="true"><span class="visuallyhidden">Remove</span></span> <a role="option" aria-describedby="recent-searches-heading" class="js-nav" href="" data-search-query="" data-query-source="" data-ds="recent_search" tabindex="-1"></a> </li> </ul> </div> <div role="presentation" class="typeahead-saved-searches"> <h3 id="saved-searches-heading" class="typeahead-category-title saved-searches-title">Saved searches</h3> <ul role="presentation" class="typeahead-items saved-searches-list"> <li role="presentation" class="typeahead-item typeahead-saved-search-item"> <span class="Icon Icon--close" aria-hidden="true"><span class="visuallyhidden">Remove</span></span> <a role="option" aria-describedby="saved-searches-heading" class="js-nav" href="" data-search-query="" data-query-source="" data-ds="saved_search" tabindex="-1"></a> </li> </ul> </div> <ul role="presentation" class="typeahead-items typeahead-topics"> <li role="presentation" class="typeahead-item typeahead-topic-item"> <a role="option" class="js-nav" href="" data-search-query="" data-query-source="typeahead_click" data-ds="topics" tabindex="-1"> </a> </li> </ul> <ul role="presentation" class="typeahead-items typeahead-accounts social-context js-typeahead-accounts"> <li role="presentation" data-user-id="" data-user-screenname="" data-remote="true" data-score="" class="typeahead-item typeahead-account-item js-selectable"> <a role="option" class="js-nav" data-query-source="typeahead_click" data-search-query="" data-ds="account"> <img class="avatar size32" alt=""> <span class="typeahead-user-item-info"> <span class="fullname"></span> <span class="js-verified hidden"><span class="verifiedContainer"><span class="Icon Icon--verifiedFill Icon--small"></span><span class="Icon Icon--verified Icon--small"></span><span class="u-hiddenVisually">Verified account</span></span> </span> <span class="username"><s>@</s><b></b></span> </span> <span class="typeahead-social-context"></span> </a> </li> <li role="presentation" class="js-selectable typeahead-accounts-shortcut js-shortcut"><a role="option" class="js-nav" href="" data-search-query="" data-query-source="typeahead_click" data-shortcut="true" data-ds="account_search"></a></li> </ul> <ul role="presentation" class="typeahead-items typeahead-trend-locations-list"> <li role="presentation" class="typeahead-item typeahead-trend-locations-item"><a role="option" class="js-nav" href="" data-ds="trend_location" data-search-query="" tabindex="-1"></a></li> </ul> </div> </div> </form> </div> <ul class="nav right-actions"><li class="me dropdown session js-session" data-global-action="t1me" id="user-dropdown"> <a href="/settings/account" class="btn js-tooltip settings dropdown-toggle js-dropdown-toggle" id="user-dropdown-toggle" title="Profile and settings" data-placement="bottom"><img class="avatar size32" src="https://pbs.twimg.com/profile_images/413830060559192064/uty4rN6J_normal.jpeg" alt="Profile and settings" data-user-id="8515852"></a> <div class="dropdown-menu"> <div class="dropdown-caret"> <span class="caret-outer"></span> <span class="caret-inner"></span> </div> <ul> <li class="current-user" data-name="profile"> <a href="/ageitgey" class="account-summary account-summary-small js-nav" data-nav="view_profile"><div class="content"><div class="account-group js-mini-current-user" data-user-id="8515852" data-screen-name="ageitgey"><b class="fullname">Adam Geitgey</b><span class="screen-name hidden" dir="ltr">@ageitgey</span><small class="metadata">View profile</small></div></div></a> </li> <li class="dropdown-divider"></li> <li data-name="lists"><a href="/ageitgey/lists" data-nav="all_lists">Lists</a></li> <li class="dropdown-divider"></li> <li><a href="//support.twitter.com" data-nav="help_center">Help</a></li> <li class="js-keyboard-shortcut-trigger" data-nav="shortcuts"> <button type="button" class="dropdown-link">Keyboard shortcuts</button> </li> <li><a href="https://ads.twitter.com/start?ref=gl-tw-tw-twitter-ads" target="_blank" data-nav="ads">Twitter Ads</a></li> <li><a class="user-dropdown-analytics" href="https://analytics.twitter.com/" target="_blank" data-nav="user_dropdown_analytics">Analytics</a></li> <li class="dropdown-divider"></li> <li><a href="/settings/account" data-nav="settings" class="js-nav">Settings</a></li> <li class="js-signout-button" id="signout-button" data-nav="logout"> <button type="button" class="dropdown-link">Log out</button> <form class="t1-form dropdown-link-form signout-form" id="signout-form" action="/logout" method="POST"> <input type="hidden" value="bb7b40c8404c096f5ad906965277f21b059ba91a" name="authenticity_token" class="authenticity_token"> <input type="hidden" name="reliability_event" class="js-reliability-event"> <input type="hidden" name="scribe_log"> </form> </li> </ul> </div> </li><li role="complementary" aria-labelledby="global-new-tweet-button" class="topbar-tweet-btn"> <button id="global-new-tweet-button" type="button" class="js-global-new-tweet js-tooltip btn primary-btn tweet-btn js-dynamic-tooltip" data-placement="bottom" data-component-term="new_tweet_button"> <span class="Icon Icon--tweet Icon--large"></span> <span class="text">Tweet</span> </button> </li></ul></div> </div> </div> </div> </div> <div id="page-outer"> <div id="page-container" class="AppContent wrapper wrapper-permalink"> <style id="user-style-github"> a, a:hover, a:focus, a:active { color: #0000FF; } .u-textUserColor, .u-textUserColorHover:hover, .u-textUserColorHover:focus { color: #0000FF !important; } .u-borderUserColor, .u-borderUserColorHover:hover, .u-borderUserColorHover:focus { border-color: #0000FF !important; } .u-bgUserColor, .u-bgUserColorHover:hover, .u-bgUserColorHover:focus { background-color: #0000FF !important; } .u-boxShadowInsetUserColorHover:hover, .u-boxShadowInsetUserColorHover:focus { box-shadow: inset 0 0 0 5px #0000FF !important; } .u-textUserColorLight { color: #9999FF !important; } .u-borderUserColorLight, .u-borderUserColorLightFocus:focus, .u-borderUserColorLightHover:hover, .u-borderUserColorLightHover:focus { border-color: #9999FF !important; } .u-bgUserColorLight { background-color: #9999FF !important; } .u-boxShadowUserColorLighterFocus:focus { box-shadow: 0 0 8px rgba(0, 0, 0, 0.05), inset 0 1px 2px rgba(0,0,255,0.25) !important; } .u-textUserColorLightest { color: #E5E5FF !important; } .u-borderUserColorLightest { border-color: #E5E5FF !important; } .u-bgUserColorLightest { background-color: #E5E5FF !important; } .u-textUserColorLighter { color: #BFBFFF !important; } .u-borderUserColorLighter { border-color: #BFBFFF !important; } .u-bgUserColorLighter { background-color: #BFBFFF !important; } .u-bgUserColorDarkHover:hover { background-color: #0000CC !important; } .u-borderUserColorDark { border-color: #0000CC !important; } .u-bgUserColorDarkerActive:active { background-color: #000099 !important; } a, .btn-link, .btn-link:focus, .icon-btn, .pretty-link b, .pretty-link:hover s, .pretty-link:hover b, .pretty-link:focus s, .pretty-link:focus b, /* Account Group */ .metadata a:hover, .metadata a:focus, .account-group:hover .fullname, .account-group:focus .fullname, .account-summary:focus .fullname, .message .message-text a, .stats a strong, .plain-btn:hover, .plain-btn:focus, .dropdown.open .user-dropdown.plain-btn, .open > .plain-btn, #global-actions .new:before, .module .list-link:hover, .module .list-link:focus, .UserCompletion-step:hover, .stats a:hover, .stats a:hover strong, .stats a:focus, .stats a:focus strong, .profile-modal-header .fullname a:hover, .profile-modal-header .username a:hover, .profile-modal-header .fullname a:focus, .profile-modal-header .username a:focus, .story-article:hover .metadata, .story-article .metadata a:focus, .find-friends-sources li:hover .source, .stream-item a:hover .fullname, .stream-item a:focus .fullname, .stream-item .view-all-supplements:hover, .stream-item .view-all-supplements:focus, .tweet .time a:hover, .tweet .time a:focus, .tweet .details.with-icn b, .tweet .details.with-icn .Icon, .tweet .tweet-geo-text a:hover, .stream-item:hover .original-tweet .details b, .stream-item .original-tweet.focus .details b, .stream-item.open .original-tweet .details b, .simple-tweet:hover .details b, .simple-tweet.focus .details b, .simple-tweet.open .details b, .simple-tweet:hover .details .simple-details-link, .simple-tweet.focus .details .simple-details-link, .client-and-actions a:hover, .client-and-actions a:focus, .dismiss-promoted:hover b, .tweet .context .pretty-link:hover s, .tweet .context .pretty-link:hover b, .tweet .context .pretty-link:focus s, .tweet .context .pretty-link:focus b, .list .username a:hover, .list .username a:focus, .list-membership-container .create-a-list, .list-membership-container .create-a-list:hover, .story-header:hover .view-tweets, .card .list-details a:hover, .card .list-details a:focus, .card .card-body:hover .attribution, .card .card-body .attribution:focus, .events-card .card-body:hover .attribution, .events-card .card-body .attribution:focus, .new-tweets-bar, .onebox .soccer ul.ticker a:hover, .onebox .soccer ul.ticker a:focus, .discover-item-actions a, .remove-background-btn, .stream-item-activity-notification .latest-tweet .tweet-row a:hover, .stream-item-activity-notification .latest-tweet .tweet-row a:focus, .stream-item-activity-notification .latest-tweet .tweet-row a:hover b, .stream-item-activity-notification .latest-tweet .tweet-row a:focus b { color: #0000FF; } #global-actions > li > a { border-bottom-color: #0000FF; } #global-actions > li:hover > a, #global-actions > li > a:focus, .nav.right-actions > li > a:hover, .nav.right-actions > li > button:hover, .nav.right-actions > li > a:focus, .nav.right-actions > li > button:focus { color: #0000FF; } /* hover state for photo select button*/ .photo-selector:hover .btn, .icon-btn:hover, .icon-btn:active, .icon-btn.active, .icon-btn.enabled { border-color: #0000FF; border-color: rgba(0,0,255,.5); color: #0000FF; } /* hover state for photo select button*/ .photo-selector:hover .btn, .icon-btn:hover { background-image: linear-gradient(rgba(255,255,255,0), rgba(0,0,255,.1)); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00FFFFFF', endColorstr='#190000FF'); /* IE8-9 */ } .icon-btn.disabled, .icon-btn.disabled:hover, .icon-btn[disabled], .icon-btn[aria-disabled=true] { color: #0000FF; } /* tweet-btn can have primary-btn class as well so the following rules ensure that the correct background color is applied */ .tweet-btn, .tweet-btn:focus { background-color: #0000FF; background: rgba(0,0,255,.8); } .tweet-btn:hover, .tweet-btn:active, .tweet-btn.active { background-color: #0000FF; } .tweet-btn.btn.disabled, .tweet-btn.btn.disabled:hover, .tweet-btn.btn[disabled], .tweet-btn.btn[aria-disabled=true] { background: #0000FF; } .btn:focus, .btn.focus, .Button:focus { box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(0, 0, 255, 0.5); } .selected-stream-item:focus { box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.5); } /* highlighting when navigate through timeline stream table view with j & k. */ .js-navigable-stream.stream-table-view .selected-stream-item[tabindex="-1"]:focus { outline: 3px solid rgba(0, 0, 255, 0.5) !important; } /* box-shadow does not work with table tr element */ .js-navigable-stream.stream-table-view .selected-stream-item:focus { box-shadow: none; } /** * 1. Bring actionable tweet to top when active to ensure border * highlighting wraps entire tweet. Value must be at least at if not * higher than the z-index value of ProfileHeading to ensure first * tweet in timeline receives border on all four sides. * NOTE: z-index should be 2 to avoid conflicts with .ProfileCanopy and .ProfileCard-avatarLink */ .ProfileTweet.is-actionable, .js-stream-item.is-selected:focus .ProfileTweet, .js-stream-item.is-selected:focus .ProfileCard, .QuoteTweet:hover, .QuoteTweet:focus, .QuoteTweet:active { border-color: rgba(0, 0, 255, 0.5); z-index: 2; /* 1 */ } .global-dm-nav.new.with-count .dm-new { background: #fff; } .global-dm-nav.new.with-count .dm-new .count-inner { background: #0000FF; } .global-nav .people .count .count-inner { background: #0000FF; } .dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-menu .dropdown-link:hover, .dropdown-menu .dropdown-link:focus, .dropdown-menu .dropdown-link.is-focused, .dropdown-menu li:hover .dropdown-link, .dropdown-menu li:focus .dropdown-link, .dropdown-menu .typeahead-recent-search-item.selected, .dropdown-menu .typeahead-saved-search-item.selected, .dropdown-menu .selected a, .dropdown-menu .dropdown-link.selected { background-color: #0000FF !important; } /* give tweet boxes 10% of the users link color as background */ .home-tweet-box, .dm-tweetbox, .RetweetDialog-commentBox, .WebToast-box--altColor, .content-main .conversations-enabled .expansion-container .inline-reply-tweetbox { background-color: #E5E5FF; } .conversations-enabled .inline-reply-caret .caret-inner { border-bottom-color: #E5E5FF; } .top-timeline-tweetbox .timeline-tweet-box .tweet-form.condensed .tweet-box { color: #0000FF; } /* give tweet box containers an outline using the users link color */ .home-tweet-box, .top-timeline-tweetbox .timeline-tweet-box { border-color: #BFBFFF !important; } /* give tweet boxes an outline using the users link color */ .tweet-box[contenteditable="true"] { border-color: rgba(0,0,255,0.25); } input:focus, textarea:focus, div[contenteditable="true"]:focus, div[contenteditable="true"].fake-focus { border-color: #6666FF; box-shadow: inset 0 0 0 1px rgba(0, 0, 255, 0.7); } .currently-dragging.modal-enabled .modal .tweet-box, .currently-dragging:not(.modal-enabled) .tweet-content .tweet-box, .tweet-box[contenteditable="true"]:focus { border-color: #9999FF; box-shadow: none; } s, .pretty-link:hover s, .pretty-link:focus s, .stream-item-activity-notification .latest-tweet .tweet-row a:hover s, .stream-item-activity-notification .latest-tweet .tweet-row a:focus s { color: #6666FF; } .vellip, .vellip:before, .vellip:after, .conversation-module > li:after, .conversation-module > li:before, .ThreadedConversation-tweet ~ .ThreadedConversation-tweet:before, .ThreadedConversation-tweet:after, .ThreadedConversation-viewOther:before, .ThreadedConversation-unavailableTweet:before, .ThreadedConversation-unavailableTweet:after { background-color: #6666FF; } .tweet .sm-reply, .tweet .sm-rt, .tweet .sm-fav, .tweet .sm-image, .tweet .sm-video, .tweet .sm-audio, .tweet .sm-geo, .tweet .sm-in, .tweet .sm-trash, .tweet .sm-more, .tweet .sm-page, .tweet .sm-embed, .tweet .sm-summary, .tweet .sm-chat, .timelines-navigation .active .profile-nav-icon, .timelines-navigation .profile-nav-icon:hover, .timelines-navigation .profile-nav-link:focus .profile-nav-icon, .sm-top-tweet, .metadata a.tweet-geo-text:hover .sm-geo, .discover-item .js-action-card-search:hover .sm-search, .discover-item .js-action-card-search:focus .sm-search { background-color: #0000FF; } .enhanced-mini-profile .mini-profile .profile-summary { background-image: url(https://pbs.twimg.com/profile_banners/13334762/1415719104/mobile); } .wrapper-profile .profile-card.profile-header .profile-header-inner { background-image: url(https://pbs.twimg.com/profile_banners/13334762/1415719104/web); } #global-tweet-dialog .modal-header { border-bottom: solid 1px rgba(0, 0, 255, .25); } #global-tweet-dialog .modal-tweet-form-container { background-color: #0000FF; background: rgba(0, 0, 255, .1); } .inline-reply-tweetbox { background-color: #E5E5FF; } </style> <style id="user-style-github-bg-img" class="js-user-style-bg-img"> body.user-style-github { background-color: #EEEEEE; } </style> <style id="user-style-github-header-img" class="js-user-style-header-img"> body.user-style-github .enhanced-mini-profile .mini-profile .profile-summary { background-image: url(https://pbs.twimg.com/profile_banners/13334762/1415719104/web); } body.user-style-github .wrapper-profile .profile-card.profile-header .profile-header-inner { background-image: url(https://pbs.twimg.com/profile_banners/13334762/1415719104/web); } .DashboardProfileCard-bg { background-image: url(https://pbs.twimg.com/profile_banners/13334762/1415719104/600x200); } body.user-style-github .profile-canopy .bg-img { background-image: url(https://pbs.twimg.com/profile_banners/13334762/1415719104/web_retina); } </style> <div class="permalink-container"> <div role="main" class="permalink light-inline-actions stream-uncapped"> <div class="permalink-inner permalink-tweet-container"> <div class="tweet permalink-tweet js-actionable-user js-actionable-tweet js-original-tweet opened-tweet has-cards with-social-proof with-user-actions logged-in preexpanded" data-associated-tweet-id="609116267891580928" data-tweet-id="609116267891580928" data-disclosure-type="" data-item-id="609116267891580928" data-permalink-path="/github/status/609116267891580928" data-screen-name="github" data-name="GitHub" data-user-id="13334762" data-has-cards="true" data-card2-type="summary_large_image" data-mentions="codeconf" data-you-follow="false" data-follows-you="false" data-you-block="false" > <div class="content clearfix"> <div class="permalink-header"> <div class="follow-bar"> <div class="user-actions btn-group not-following not-muting " data-user-id="13334762" data-screen-name="github" data-name="GitHub" data-protected="false"> <div class="dropdown "> <button type="button" class="user-dropdown dropdown-toggle js-dropdown-toggle js-link js-tooltip btn plain-btn" title="More user actions"> <span class="user-dropdown-icon Icon Icon--cog Icon--medium"><span class="visuallyhidden">User Actions</span></span> </button> <div class="dropdown-menu"> <div class="dropdown-caret"> <span class="caret-outer"></span> <span class="caret-inner"></span> </div> <ul> <li class="mention-text pretty-link not-blocked"><button type="button" class="dropdown-link">Tweet to <span class="u-dir" dir="ltr">@github</span></button></li> <li class="dm-text"><button type="button" class="dropdown-link">Send a Direct Message</button></li> <li class="list-text pretty-link not-blocked"><button type="button" class="dropdown-link">Add or remove from lists&hellip;</button></li> <li class="dropdown-divider not-blocked"></li> <li class="mute-user-item pretty-link"><button type="button" class="dropdown-link">Mute</button></li> <li class="unmute-user-item pretty-link"><button type="button" class="dropdown-link">Unmute</button></li> <li class="block-text pretty-link not-blocked"><button type="button" class="dropdown-link">Block</button></li> <li class="unblock-text pretty-link"><button type="button" class="dropdown-link">Unblock</button></li> <li class="report-text pretty-link"><button type="button" class="dropdown-link">Report</button></li> <li class="hide-suggestion-text"><button type="button" class="dropdown-link">Hide this suggestion</button></li> <li class="dropdown-divider is-following"></li> <li class="retweet-on-text"><button type="button" class="dropdown-link">Turn on Retweets</button></li> <li class="retweet-off-text"><button type="button" class="dropdown-link">Turn off Retweets</button></li> <li class="device-notifications-on-text"><button type="button" class="dropdown-link">Turn on mobile notifications</button></li> <li class="device-notifications-off-text"><button type="button" class="dropdown-link">Turn off mobile notifications</button></li> <li class="dropdown-divider is-embeddable"></li> <li class="embed-profile"><button type="button" class="dropdown-link">Embed this Profile</button></li> </ul> </div> </div> <button class="user-actions-follow-button js-follow-btn follow-button btn" type="button"> <span class="button-text follow-text"> <span class="Icon Icon--follow"></span> Follow </span> <span class="button-text following-text"> Following </span> <span class="button-text unfollow-text"> Unfollow </span> <span class="button-text blocked-text">Blocked</span> <span class="button-text unblock-text">Unblock</span> <span class="button-text pending-text">Pending</span> <span class="button-text cancel-text">Cancel</span> </button> </div> </div> <a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="/github" data-user-id="13334762"> <img class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/426158315781881856/sBsvBbjY_bigger.png" alt=""> <strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part>GitHub<span class="verifiedContainer"><span class="Icon Icon--verifiedFill Icon--small"></span><span class="Icon Icon--verified Icon--small"></span><span class="u-hiddenVisually">Verified account</span></span> </strong> <span>&rlm;</span><span class="username js-action-profile-name" data-aria-label-part><s>@</s><b>github</b></span> </a> <small class="time"> <a href="/github/status/609116267891580928" class="tweet-timestamp js-permalink js-nav js-tooltip" title="5:53 PM - 11 Jun 2015" ><span class="_timestamp js-short-timestamp " data-aria-label-part="last" data-time="1434059609" data-time-ms="1434059609000" data-long-form="true">Jun 11</span></a> </small> </div> </div> <p class="TweetTextSize TweetTextSize--28px js-tweet-text tweet-text" lang="en" data-aria-label-part="0">Check out the full list of <a href="/codeconf" class="twitter-atreply pretty-link js-nav" dir="ltr" ><s>@</s><b>codeconf</b></a> sessions and grab your ticket now! See you in Nashville in 2 weeks: <a href="http://t.co/9mynYt0VPc" rel="nofollow" dir="ltr" data-expanded-url="http://codeconf.com/" class="twitter-timeline-link" target="_blank" title="http://codeconf.com/" ><span class="tco-ellipsis"></span><span class="invisible">http://</span><span class="js-display-url">codeconf.com</span><span class="invisible">/</span><span class="tco-ellipsis"><span class="invisible">&nbsp;</span></span></a></p> <div class="stream-item-footer"> <span class="ProfileTweet-action--reply u-hiddenVisually"></span> <span class="ProfileTweet-action--retweet u-hiddenVisually"> <span class="ProfileTweet-actionCount" data-tweet-stat-count="27"> <span class="ProfileTweet-actionCountForAria" data-aria-label-part>27 retweets</span> </span> </span> <span class="ProfileTweet-action--favorite u-hiddenVisually"> <span class="ProfileTweet-actionCount" data-tweet-stat-count="27"> <span class="ProfileTweet-actionCountForAria" data-aria-label-part>27 favorites</span> </span> </span> <div role="group" aria-label="Tweet actions" class="ProfileTweet-actionList u-cf js-actions"> <div class="ProfileTweet-action ProfileTweet-action--reply"> <button class="ProfileTweet-actionButton u-textUserColorHover js-actionButton js-actionReply js-tooltip" data-modal="ProfileTweet-reply" type="button" title="Reply"> <span class="Icon Icon--reply"></span> <span class="u-hiddenVisually">Reply</span> </button> </div> <div class="ProfileTweet-action ProfileTweet-action--retweet js-toggleState js-toggleRt"> <button class="ProfileTweet-actionButton js-actionButton js-actionRetweet js-tooltip" title="Retweet" data-modal="ProfileTweet-retweet" type="button"> <span class="Icon Icon--retweet"></span> <span class="u-hiddenVisually">Retweet</span> <span class="ProfileTweet-actionCount"> <span class="ProfileTweet-actionCountForPresentation" aria-hidden="true">27</span> </span> </button><button class="ProfileTweet-actionButtonUndo js-actionButton js-actionRetweet js-tooltip" data-modal="ProfileTweet-retweet" title="Undo retweet" type="button"> <span class="Icon Icon--retweet"></span> <span class="u-hiddenVisually">Retweeted</span> <span class="ProfileTweet-actionCount"> <span class="ProfileTweet-actionCountForPresentation" aria-hidden="true">27</span> </span> </button> </div> <div class="ProfileTweet-action ProfileTweet-action--favorite js-toggleState"> <button class="ProfileTweet-actionButton js-actionButton js-actionFavorite js-tooltip" title="Favorite" type="button"> <span class="Icon Icon--favorite"></span> <span class="u-hiddenVisually">Favorite</span> <span class="ProfileTweet-actionCount"> <span class="ProfileTweet-actionCountForPresentation" aria-hidden="true">27</span> </span> </button><button class="ProfileTweet-actionButtonUndo u-linkClean js-actionButton js-actionFavorite js-tooltip" title="Undo favorite" type="button"> <span class="Icon Icon--favorite"></span> <span class="u-hiddenVisually">Favorited</span> <span class="ProfileTweet-actionCount"> <span class="ProfileTweet-actionCountForPresentation" aria-hidden="true">27</span> </span> </button> </div> <div class="ProfileTweet-action ProfileTweet-action--follow user-actions not-following not-muting" data-user-id="13334762" > <button class="ProfileTweet-actionButton ProfileTweet-follow-button js-tooltip" title="Follow" data-modal="ProfileTweet-follow" type="button"> <span class="Icon Icon--follow"></span> <span class="u-hiddenVisually">Follow</span> </button><button class="ProfileTweet-actionButtonUndo ProfileTweet-follow-button js-tooltip" data-modal="ProfileTweet-follow" title="Undo follow" type="button"> <span class="Icon Icon--following"></span> <span class="u-hiddenVisually">Followed</span> </button> </div> <div class="ProfileTweet-action ProfileTweet-action--more js-more-ProfileTweet-actions"> <div class="dropdown"> <button class="ProfileTweet-actionButton u-textUserColorHover dropdown-toggle js-tooltip js-dropdown-toggle" type="button" title="More"> <span class="Icon Icon--dots"></span> <span class="u-hiddenVisually">More</span> </button> <div class="dropdown-menu"> <div class="dropdown-caret"> <div class="caret-outer"></div> <div class="caret-inner"></div> </div> <ul> <li class="share-via-dm js-actionShareViaDM" data-nav="share_tweet_dm"> <button type="button" class="dropdown-link">Share via Direct Message</button> </li> <li class="copy-link-to-tweet js-actionCopyLinkToTweet"> <button type="button" class="dropdown-link">Copy link to Tweet</button> </li> <li class="embed-link js-actionEmbedTweet" data-nav=