• GitHub Rebase #36

    qrush 8 Feb 2010

    As always, if you have neat projects you want to show off send me a message! I usually try to keep a balance of languages/domains between the posts, so don’t lose hope if your project isn’t in the latest issue. Just please have a README so you can show others (and me!) how to setup/use your project.

    Featured Project

    coffee-script is what HAML and SASS are to HTML and CSS, just for JavaScript. This is a fantastic DSL that compiles down to executable JS and adds plenty of awesome features along the way. CoffeeScript offers a terse syntax inspired by Ruby and Python, list comprehensions, existential operators to remove pesky typeof checks, and a reliable inheritance model to boot. The list goes on and on, and for executable examples along with their compiled-to-JavaScript equivalents, check out the docs. Some projects are already cropping up, including rack-coffee and even a rewrite of underscore.js. GitHub’s languages section already recognizes CoffeeScript, so get hacking!

    Notably New Projects

    nv, or Notational Velocity, is an OSX desktop app that does just that: note taking. It approaches this simple task in a mouseless, modeless way, and user interaction is driven through incremental search. If it can’t find a note with you’re starting to type, and a new one is instantly created and saved. The data’s also not trapped on your own machine, you can hook it up to Simplenote, or to anywhere via WriteRoom or Dropbox. Download it here.

    jquery.fortune is a replacement for Unix’s fortune in jQuery. Set up your fortune cookies with JSON, hook it to an HTML element, and you’re all set. There’s a live demo if you want to see it in action. On the more practical side, this could be a great example of how easy it is to make a jQuery plugin. I’m just waiting for the first person to combine this with the jQuery Konami Code.

    hubroid is an Android app for keeping track of what’s happening on GitHub while you’re not hooked to your computer. So far, the app can look up the repos you’re watching and your own, forked repos, and the latest commits from a given repo. Being an Droid owner myself, I’m tempted to break out some Java to help contribute. It would be great to view commit diffs or your timeline in the app, or even post gists.

  • A Note on the Recent Outages

    mojombo 4 Feb 2010

    Following three months of near 100% uptime, we’ve just been through three major outages in as many days. I wanted to take some time to detail the problems and what we intend to do to prevent similar downtime in the future.

    Outage #1 (02/02/2010 9:55:09AM PST) was initiated by a load spike on one of our file servers (fs1a). When a file server stops responding to heartbeat, the slave server in the pair kills the master and takes over. In this case, the master was not killed quickly enough and the storage partitions did not migrate cleanly to the slave. Cleanup on the split-blain file server pair was delayed due to some inefficient DRBD configuration that we’ve been meaning to update. By rolling out improvements to the DRBD configuration, this type of problem should be prevented from happening in the future.

    Outage #2 (02/03/2010 6:10:08PM PST) looked like a power outage at first, since so many machines were affected, but the root cause was the deployment of a faulty DRBD configuration update that propagated to all machines (courtesy of Puppet) and started causing pairs of machines to halt replication to prevent corruption caused by an invalid configuration file. Eventually the load balancer pair was affected and we could no longer even serve the Angry Unicorn page. The way that the servers went down, the number of servers that went down, and the length of time it takes to resync downed pairs resulted in a lengthy outage. There are several steps to preventing this kind of outage in the future. First and most obvious is to maintain tighter control and testing of proposed system-wide configuration changes. We also plan to deploy (well-tested) changes to the DRBD configuration that will reduce cleanup times and automate the startup process for downed machines. These changes will result in shorter recovery times in the event of single failovers and wider machine-level restarts.

    Outage #3 (02/04/2010 2:37:08AM PST) was caused by massive load spikes across all five file servers. To prevent extended downtime we marked all file servers as offline (preventing them from going into failover) and looking for the cause of the load. After inspecting the HTTP logs, we identified a Yahoo! spider that was making thousands of requests but never waiting for responses. After banning the spider, the load returned to normal and we were able to bring the file servers back online. We are looking at our rate limiting strategy and will be making improvements over time to get the best performance for legitimate users and the best protection from anomalous behavior.

    In order to execute the improvements to various infrastructure elements, we will be having scheduled maintenance windows at 10PM PST over the next week. Most of these changes will not require any downtime, but some of them may result in temporary unavailability of file server partitions. As we perform the maintenance, we’ll keep you updated via the GitHub Twitter account, so make sure to check there for the latest maintenance news.

    We sincerely apologize for the recent problems and are working very hard to address each flaw. Stability is one of our biggest goals this year, and I look forward to making your GitHub experience as flawless as possible.

  • GitHub Drinkup, Paris Edition

    schacon 1 Feb 2010

    As I’ll be speaking at the Symfony Live Conference in Paris in a few weeks, GitHub and Sensio Labs are co-hosting a GitHub meetup in Paris on Wednesday, February 17th at 8pm.

    We’ll be joined by a bunch of PHP people from the Symfony Live Conference hopefully, so if you’re a GitHubber not going to that, please join us for some cross-language nerd chatter. I’m also giving a short Git talk at 8:30p if you want to see that.

    We hope to see you there!

    P.S.: Don’t forget that I’m doing all day Git training the next day for any of you that want to learn Git in depth and get some personal training on it.

    Patricks Irish Pub
    33, rue de Montreuil
    75011 Paris


    View Larger Map

  • Diff Your Gist

    defunkt 27 Jan 2010

    NV has ported ucnv’s Diff for Gist Greasemonkey script to a Chrome Extension.

    Pretty cool – I’ve been using it since I first saw it. And if you’re looking for more UserScripts, NV has also released a github-live-preview.

  • GitHub Meetup SF #14

    Join us on Thursday January 28th at 8:30pm for a drink at the Irish Bank! We’d hate to have to release the hounds.

    Stop by for a surprise visitor!

  • GitHub Rebase #35

    qrush 25 Jan 2010

    Rebase: good for reorganizing commits, squashing down changesets, and repairing dentures.

    Featured Project

    vanity is an experiment driven development framework for Ruby on Rails that uses A/B Testing to maximize how people interact with your site. The simple case is testing out switching out two different page layouts to see which drives more signups. Set up and track metrics such as referrals or acquisitions, and then check it out in the built in dashboard using Redis. It’s also quite easy to extend and bring in other services, such as Google Analytics. Get started split testing your app here.

    Notably New Projects

    ptex is a high-quality, production ready texture-mapping system created by Walt Disney Animation Studios. This C++ library has just recently been released here on GitHub, after being used extensively in BOLT and integrated into Pixar’s RenderMan. There’s plenty of documentation about the file formats, API, and papers on the new texture mapping procedures used in the library on the project’s website. You can also see ptex in action with a high-resolution model of a T-Rex here on YouTube or check out some sample projects.

    couch-crawler is a search engine that’s built on top of CouchDB and uses couch-lucene to index data. Created in an experiment to index work intranet pages, the neat part about this project is that there’s no web tier between the browser and CouchDB. Couch serves up static HTML/CSS, and AJAX calls hit Couch directly and then the UI is built up with the help of mustache.js. The spider uses Python along with httplib2 and Beautiful Soup to extract data. I’d love to see this apply to more than just corporate intranets, because knocking out a whole layer of glue code is a really neat idea.

    gitcharts is a small C# app that generates a graph for lines of code in a given git repository over time, and supports multiple projects in one repository. This would be really cool to see applied as a service built on top of GitHub API …hint hint!

    base64ize is a small JavaScript-based site that applies base64 to any file you drag onto it, courtesy of some new APIs in Firefox 3.6. This is just a fun hack, but definitely worth a bookmark if you’re doing this often to images or data while testing. Also, the author’s blog post shows off a part of the Mozilla developer world I haven’t seen before: hacks.mozilla.org. If you’re interested in the bleeding edge of Firefox development, keep an eye on that site to see some of the recent developments coming out from that community.

    Open-Quark is a framework for functional programming that’s heavily inspired by Haskell, built on top of the JVM, and was just recently pushed to GitHub. Its Wikipedia article describes the framework’s underlying language, CAL, as “a strongly typed, lazily evaluated functional language, supporting algebraic functions and data types with parametric polymorphism and type inferencing”. Code samples of the language and how it interops with the JVM are available, along with plenty of resources and videos to get started using it with your applications.

  • Broadcasts

    kneath 22 Jan 2010

    Over the past couple of days, you may have noticed a new piece of UI, GitHub broadcasts:

    broadcast image

    We'll be using this feature to announce significant new feature additions and changes to GitHub. Once you've read the broadcast, click hide broadcast and it won't show up until we post a new broadcast. If you missed broadcasts in between logging in, we'll let you know how many you missed (view (2) new broadcasts) which you can always see at this link: http://github.com/blog/broadcasts

    In case you've been living under a rock, here's some of the new stuff we've launched at GitHub over the past couple of months:

    Fun fact: we've launched over 1,200 commits and 130,000 line changes since December. (and that's only to the main GitHub application!)

  • Explore GitHub

    defunkt 21 Jan 2010

    This week kneath and I (with some help from The Changelog) rolled out Explore GitHub – a new page showing trending repositories, repositories recently featured on The Changelog, and recent episodes of their weekly podcast.

    The trending repos are updated every 20 minutes so have fun watching projects climb the charts as they’re blogged and tweeter about throughout the day.

  • Paris Git Training

    defunkt 21 Jan 2010

    In Paris? Our very own Scott Chacon, author of Pro Git and internationally renowned Git expert, will be teaching a Git class on February 18th, 2010.

    Check out the website for more information. We’ll see you there!

  • New Year, New Company

    pjhyett 21 Jan 2010

    As of January 1, 2010 we’re operating this site as GitHub, Inc.

    What does that mean for you? In a word: nothing.

    We originally incorporated Logical Awesome LLC prior to launching GitHub thinking that it would be just one of a number of brands we were going to release. GitHub took off in a serious way, so instead of continuing to confuse people with an obscure company name, we made the decision to change it to the obvious choice when we converted from a LLC to a C-Corp.

    Here’s to another awesome year with your favorite code host!

  • Closing Issues with PHPUnit

    defunkt 20 Jan 2010

    raphaelstolt shows how to close GitHub Issues using PHPUnit in his blog post, Closing and reopening GitHub issues via PHPUnit tests

    The secret? Implementing GitHub_TicketListener.

    Check the post for the full scoop!

    (Hat tip: PHPDeveloper)

  • GitHub Drinkup Wellington NZ Tonight!

    mojombo 19 Jan 2010

    If you happen to find yourself in Wellington, New Zealand (perhaps for LinuxConf AU) then stop by The Malt House tonight (Wednesday the 20th) after 7pm and join Scott Chacon and myself (Tom Preston-Werner) for some drinks. As always, first round’s on us! Make sure to ask for a GitHub sticker, we have a ton to give away. See you there!

    The Malt House
    48 Courtenay Pl
    Te Aro, Wellington 6011, New Zealand

  • GitHub Rebase #34

    qrush 18 Jan 2010

    It’s time for Rebase #34! As always, suggestions are welcome if you have a neat project you’d like to show off.

    Featured Project

    jquery is a cross-browser JavaScript library that makes DOM manipulation, simple animation effects, and AJAX simple. It’s used all over the web, such as on Wikipedia, WhiteHouse.gov, The Tonight Show with Conan O’Brien and of course, GitHub. Just this past week, version 1.4 was released and comes packed with too many performance enhancements to list here and new features to boot. Check out the docs for everything that’s been added or changed for this release, and the new dynamic API Browser too. There’s also tutorials and videos about the new version and getting involved with the jQuery community at the 14 Days of jQuery celebration site, which is now almost half over! Now that the project is on GitHub, the best part is that you can fork it to get started adding your own features or fixes. jQuery.contains(document, "awesome")

    Notably New Projects

    jubilator is a new slick way to browse repos that uses the GitHub API. It’s chock full of some previously-rebased projects such as Sammy and Mustache.js. The end result is a AJAX powered repo interface with syntax highlighting that’s a lot easier to view files if you don’t want to clone the project. Try it out on your repo!

    bird-show is a Lift web app that interacts with the Flickr API to show pictures. Simple, yes, but this is a great starting point for newcomers to Lift (and Scala!) and comes complete with a presentation and tutorial video on the app. You can browse some wildlife photos here on the live site.

    stacey is a lightweight PHP content management system that follows in Jekyll’s footsteps and works by generating static files off templates. Drop it onto your server with PHP installed, and you’re all set to start making pages. It’s baked in with a templating language that doesn’t require any PHP knowledge to use efficiently. There’s already a decent amount of Stacey sites online and a growing support forum. The codebase is quite accessible at around 500 lines, so get hacking!

    vz_analysis is a small R script that runs through some of the available statistics about GDP and inflation from the author’s home country of Venezuela. It’s also a nice little example of using ggplot2, a great library that can produce nearly any kind of common stats object for your graphs. Check out the source and maybe see how this can apply to some other open datasets.

    yalfs is yet another Lisp from scratch. Yes, it wouldn’t be a Rebase without a fun toy programming project, and this one is special since the author is blogging the project’s goals and progress. This implementation is done in straight C, and it already has some basic datatypes implemented. So it might be a long way from tail recursion, but this is a neat project to keep an eye on if you’re a language or functional programming geek.

  • GitHub for the Rest of Us Screencast

    defunkt 18 Jan 2010

    Know someone who could use a clear, hands-on introduction to GitHub? nettuts has them covered.

    Their Terminal, Git, and GitHub for the Rest of Us: Screencast (which compliments their excellent Getting the Hang of GitHub tutorial) is a great introduction to Git and GitHub.

  • Notification Improvements

    kneath 17 Jan 2010

    Update 1/19/2010: Page build notifications have been added to the list of notifications you can turn on/off and have moved to the Notifications section as well. Thanks!

    Today we rolled out updates to the messaging & notification systems for GitHub. We've added a couple new features and improved the existing messaging system.

    Notification Center

    If you check the account settings page, you'll notice a new tab called Notification Center that holds preferences for all the emails you get from GitHub.

    Notification Center

    Commit Comment Notifications

    We've enabled two new email notifications by default: comments on your commits (where you are listed as an author or committer) and comments on commits in your repositories. We understand some commits can get noisy, so we added the ability to turn notifications off on a per-commit basis.

    Commit Comments

    Improved email subjects

    All of our email notifications were previously "[GitHub] user sent you a message." They should be considerably more descriptive and thread friendly now.

    Email Subjects

    Notifications vs Messages

    We've separated out pull requests and issue comments into a new category called notifications. Your inbox should now be filled solely with actual messages. Notifications will show up next to your username (in grey), while the inbox count only refers to actual messages.

    Sample Userbox

    Another small update is that we've added a mark all as read button to the inbox and notification sections.

    We know there's always room for improvement with our messaging and notifications — but hopefully this is a step in the right direction. Hope you enjoy!

    P.S.: I'd like to take a moment to thank the fine folks who made MockSMTP. It made testing these new email notifications so much easier. If you're looking for testing app-generated emails locally, check it out.