defunkt Profile picture
Oct 31 9 tweets 2 min read Twitter logo Read on Twitter
It was a gorgeous Sunday morning. Birds were chirping and squirrels were squirreling. Coffee in hand, I began upgrading GitHub's testing infrastructure. When I was done, I ran a quick test and... deleted the entire production database.GitHub.com
Here's the blog post about the outage: github.blog/2010-11-15-tod…
There were a lot of things that went wrong: Our tests should not have had access to production. Our production DB shouldn't have been wipeable. We should have been able to restore the DB faster. We should also have known our `Events` table would be a doozy...
But the main thing that went wrong: our GitHub application assumed it was running in 'production' mode unless told otherwise. When I ran my test, I forgot to set the 'test' environment mode, so a connection was established to the production database, which was promptly deleted.
I remember exactly where I was sitting, in my apartment next to Dolores Park. The tests ran quickly at that point. So when I started my test and it just hung, I immediately knew something was wrong - but I thought it was a connection issue. "Huh," I thought. "That's weird."
Only when I visited a few seconds later did I realize how bad things were. Nothing worked. As explained in the blog post, we always wiped our test DB before running tests. Turns out, people don't want their data wiped on a Sunday morning for no reason.github.com
Everyone who was around helped out, but @rodjek really saved the day by quickly restoring the DB and punting on the `Events` table. We also immediately locked down production so it wouldn't happen again.
@rodjek My main takeaways:

1. Don't let anything access production except production.
2. Save server upgrades for a weekday, when your team is working and can help you recover from mistakes.
3. Test deleting and restoring data regularly.
4. It can happen to you.
@rodjek Anyway, that's my spooky story. Happy Halloween. 🎃

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with defunkt

defunkt Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @defunkt

May 18
Early GitHub revenue:

First 12 months: $1M (almost)
Second 12 months: $3M
Third: $9M
On top of that, GitHub was profitable almost every month from launch until we raised money in 2012. The one month we weren't profitable, "Red October", was the month we hired @kneath and @rtomayko. It was a deliberate bet that paid off. Big time.
@kneath How do you keep a bootstrapped startup profitable? It wasn't easy.
Read 19 tweets
Mar 29
While obvious in retrospect, GitHub's original pricing model of unlimited free public repos and paid private repos took weeks to develop. We were so focused on building the product during the beta that we didn't spend a lot of time thinking about how to charge for it.
Then one day @topfunky emailed us and said, "GitHub is great. How do I pay for it?" He offered to mail us a check. We knew we had to get serious.
"Freemium" and free trials were popular at the time, but we wanted to avoid what we felt were marketing tricks. We didn't like them, and we knew developers didn't like them. We had lots of ideas about how to make money and what to charge people, but nothing felt right.
Read 21 tweets
Feb 8
GitHub's beta launched without Pull Requests, but we did have private messages, since we were a social network. So when we first added Pull Requests, they were just special DMs: "Please pull from my fork at this branch." They sure have come a long way.

github.blog/2008-02-23-oh-…
One of the ideas behind GitHub was to take git's email-based workflow and provide a web-based alternative. Pull Requests were based on git's `request-pull` subcommand:

git-scm.com/docs/git-reque…
It wasn't until two years after launch that PRs started to resemble their current form. Designed by @kneath and engineered by @rtomayko, our first non-founder technical hires, PRs evolved from private messages into collaborative code review:

github.blog/2010-08-31-pul…
Read 11 tweets
Feb 7
The webpage I made when I was 13. Wish the "bands" link still worked: web.archive.org/web/1998120305…
MUSH was a type of MUD, but more focused on roleplaying. They had their own in-game scripting language. That's where I really learned to code - scripting events, text-based UIs, and more.
The first MUSH codebase I ever worked with was PennMUSH, now available on GitHub: github.com/pennmush/pennm…
Read 9 tweets
Feb 5
RIP @AtomEditor. Here's the very first prototype of Atom, originally called Atomicity, in 2008:

atomicity.s3.amazonaws.com/atomicity1.mp4
@AtomEditor I started working on Atomicity in 2008, but eventually set it aside to focus fully on GitHub. I also hit some weird bugs (or user error...) trying to bridge Cocoa and JS in <frame>s.
@AtomEditor In 2011, I picked it back up again. The web and JS and JavaScript core had progressed a lot in those few years. The editor was still called Atomicity in the first commit to atom/atom:
github.com/atom/atom/comm…
Read 18 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(