CARVIEW |
-
New Languages Highlighted
-
GitHub Meetup SF #16
You may think that the location of this weeks drinkup is a subtle way to cast in our lot with a particular side of the age old conundrum, ‘Pirates or Ninjas?’ It is not. We are an Equal Opportunity Employer and as such we consider applicants for all positions without regard to race, color, religion, creed, gender, national origin, age, disability, marital or veteran status, or any other legally protected status including but not limited to pirate/ninja affiliation. Also, as it turns out, there are no ninja bars. Ninjas if you would kindly rectify this we’ll happily meet on your turf next time.
The Facts:
Il Pirata 2007 16th Street San Francisco, CA 94103 February 25th 9pm
-
Scheduled Maintenance Tonight at 22:00 PST
UPDATE: These maintenance windows are now complete.
Starting tonight we will be performing a series of partition resizes on our file servers that will allow us to streamline our backup process. Each file server is broken up into 16 partitions and we will be doing the resizes on one partition at a time. Each resize is estimated to take about 20 minutes to complete during which time that partition and all repositories stored there will not be available. During the resize of your partition you will see a notice on the website informing you of the temporary unavailability and you will not be able to push, pull, or clone your repos via Git.
Thanks for your patience as we improve this portion of our infrastructure.
-
File upload improvements
Ever since we introduced the file upload section for repos, the two requests we’ve received the most have been for a no-flash alternative and download stats. Today we’re introducing both.
Flash-less uploads
We’ve had our reasons for using flash, mainly that it allows you to upload directly to S3 (instead of our server acting as a proxy), and flash can provide a status bar. Today we added a second means of uploading, basic HTML.
Flash will still be the default, but for users that block flash or don’t even have it installed, there’s now an alternative. As a bonus, if you use Chrome it will give you an upload status:
Download stats
The other major improvement we added were download stats:
Note that these download counts are from today forward. We were unable to retroactively calculate downloads.
-
Introducing status.github.com
Today we’re opening up a new site — https://status.github.com. We’ll be using this site (in addition to our twitter account) to post status updates (maintenance warnings, outages, etc). This site is hosted over at Heroku so it will be shielded from any network problems GitHub may suffer.
We take our uptime and availability very seriously (remember, we use GitHub to develop GitHub!) and want to be as open as we can with service disruptions.
-
GitHub Meetup SF #15
Check it out. We’re doing a repeat venue. STOP CRYING. We’ll see you at Thieves Tavern tomorrow, Thursday February 11th at 8:30pm. Here’s a second chance for you to not confuse Thieves Tavern with Whiskey Thieves or Dirty Thieves or Ali Baba and the Forty Thieves or Thieves Thieves Thieves and Thieves like you might have last time.
-
GitHub Rebase #36
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
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
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 -
Diff Your Gist
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
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
Over the past couple of days, you may have noticed a new piece of UI, GitHub broadcasts:
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: https://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:
- Explore GitHub
- Notification Improvements
- Improved Commit Diffs
- New Repository Headers
- Merge commits are back (and better than ever)
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
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
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 features & announcements
-
defunkt on Feb 23
-
luckiestmonkey on Feb 19
-
mojombo on Feb 12
-
tekkub on Feb 11
-
kneath on Feb 10
-
luckiestmonkey on Feb 10
-
qrush on Feb 08
-
mojombo on Feb 04
-
schacon on Feb 01
-
defunkt on Jan 27
-
luckiestmonkey on Jan 26
-
qrush on Jan 25
-
kneath on Jan 22
-
defunkt on Jan 21
-
defunkt on Jan 21