The official blog of Codecademy Blog
Stay up to date with feature releases, events, and much more.
Thanks to all of our users for bearing with us this week with our downtime and database issues. We've worked nonstop the past couple of days to make sure the site is up, functional, and behaving like it was before the downtime. A very small number of users are still affected, and we're working with each and every one of them on a case-by-case basis to make sure they're happy with their profiles. We thought our downtime could be a learning experience for everyone - I wanted to let you in on what happened in the aftermath as well.
RECOVERING FROM DATA LOSS
After we had our database issue, we pieced together the data from last week using backups and with the help of some of our external service providers that had cached copies of submissions, posts, achievements, and more. Our entire engineering team worked shifts for 36 hours straight to pull data out of our backups and prepare a fixed version of our database for when the site came back online.
Thursday evening at 6 or 7pm, after a little more than 5 hours of downtime, we decided not to bring the site up until we were confident we had restored the majority of users' progress, points, and badges. We spent the next 11 or 12 hours working on that (all hands on deck).
Thursday morning, we brought the site back with almost all of the data we were able to restore. Most users were unaffected and saw no issues after the site came back up. Linda and Karen, our community management team, designed a form for people to report issues. Ryan, Codecademy's cofounder and CTO, put up a blog post explaining the reasons behind the downtime. Lots of users reported no problems and offered to lend a hand to help out - thanks! It's amazing to work with such a receptive and helpful community.
SWEATING THE SMALL STUFF
After bringing the site back online, we dedicated Thursday and Friday to working with our users to recover their data based on the feedback we got through email, Twitter, Facebook, and the form we designed. We know how important progress, points, and badges are to our users, so we have spent the past couple of days getting everything back to normal. Tonight, we're running a final script and the site will be down for 15 minutes as we add in a small amount of data that should affect only a handful of users.
We know downtime is not good for our users and we are not proud of it. That said, it happens to everyone. Great companies we admire like Etsy and Twitter have had downtime issues in the past. What's most important is how they handle themselves afterwards.
Everyone who was affected by data loss will get a special Codecademy badge.
BUSINESS AS USUAL
Thanks for bearing with us after this outage. Going forward, we've implemented a lot more policies internally to make sure this never happens again. We've increased our daily backup schedule and, in some cases, started backing data up more frequently. Our backups are redundant across several data sources. After this experience, we've practiced how to recover from many circumstances - data loss, downtime, etc. We want you, our users and learners, to be confident that Codecademy is the best place to learn to code whenever you want to learn. We're back to building new features and working on old ones - check back next week for more announcements!
Sometimes you learn from Codecademy; sometimes you learn from real-life experience. Yesterday, Codecademy was offline for almost 24 hours. We want to apologize and explain what happened.
Currently we have restored all user progress — courses, points and streaks — from before 2/6/13. We are doing all we can to restore user progress from 2/6/13 to 2/13/13 at 1:09 PM EST. Despite our best efforts we cannot guarantee that all work from that one week period will be recovered. If you have been affected, please let us know.
At 1:09AM EST on Wednesday 2/13, we took Codecademy down to deal with a database migration issue we were facing. We tweeted about it at 1:30. Then we spent the next 24 hours behind the scenes to iron out the issue.
How did it happen?
Like most web applications, Codecademy stores its information — everything from your submissions in exercises to new accounts — in a database. We use a technology called MongoDB (by our friends at 10gen) to do this. Our databases have hundreds of millions of items in them and are growing larger by the second. We've been working to change the configuration of our databases so that we can migrate our data to new database structures, laying a solid foundation for future developments and features.
Around 1:30 PM yesterday we became aware of an issue: one of our local environments was not set up correctly, and was causing a database malfunction. The whole team dropped what they were working on and focused on restoring the site as quickly as possible.
Soon after we made the decision to keep the site down until we were 100% sure we could restore the majority of the data. Working with our external service providers, we matched up the data they had with the data we had internally from backups. We verified the integrity of certain data and began piecing back together our databases before bringing the site back online.
After pulling together backups of submissions from Amazon S3, course progress from our backup, and emails from our email database and userfox, we tested things internally to verify we hadn't lost much. Then, finally, we brought the site back up.
What does this mean for me?
We have minimized the number of people affected by pulling from our backups, but we were not able to restore everything.
**Currently we have restored all user progress — courses, points and streaks — from before 2/6/13. We are doing all we can to restore user progress from 2/6/13 to 2/13/13 at 1:09 PM EST. Despite our best efforts we cannot guarantee that all work from that one week period will be recovered. If you have been affected, please let us know.**
There are also certain data types that we were not able to retrieve for some users.
Anyone who created a new account from 2/6 - 2/13
Profile pictures will be missing and connection to social media accounts will need to be restored. We will be sending you a link to get set up again.
Anyone who created or joined a new group from 2/6 - 2/13
A small number of users and beta testers have access to our groups feature. If you created a group in the past week you will need to recreate it. If you joined a group in the past week you will need to rejoin.
This event underscored the importance of frequent backups. We have created a new plan based on what we have learned to better recover from potential database migration issues in the future.
We will also be extending everyone's streaks today. We know that you are committed to learning to code. We are committed to helping you get there. If our site goes down, your learning does too. This is the least we can do.
I wrote this post so that you would have confidence that we take downtime very seriously; we learn from each and every event; and we are committed to building the strongest community for learning how to program. Thank you to all our users for your patience.
When I worked at GroupMe before starting Codecademy, it always amazed me that the company started at a TechCrunch Disrupt hackathon. Its founders somehow built an awesome group texting application in less than 48 hours! How'd they do it? They built on top of another company's technology - Twilio, in this case - and used it to build an app of their own. Twilio sent the text messages, but GroupMe handled group formation, the interface, and more. A year after GroupMe was created at a hackathon, Skype bought it for more than $60m.
That's one of the many examples of the power of APIs - application programming interfaces. They exist to make it easy to interface with applications other people have built. Without APIs, hackathons would be much harder. APIs make it easy to create things - to make things that interface and interact with the real world and the technologies in it. For Twilio, this means interacting with phone numbers. For YouTube, it's with videos.
Codecademy has long taught people the basics of programming and how to build things like games and websites. It's always been our goal to help people create things - to make companies, products, and real-world applications. Today, we're one step closer with that. We worked with great companies like Youtube, NPR, Bitly, SoundCloud, Parse, and more to teach you how to build simple API apps. What can you do with these APIs? Build awesome websites with video with YouTube’s. Shorten links on the fly and grab stats with Bitly’s. Mash up the news with NPR’s. That’s just the beginning - we’ll be adding more APIs soon!
Programming is an amazing skill because it lets you create things on your computer. Using APIs makes that one step easier. It's often hard for developers (even professional ones!) to get up to date on the latest APIs and to learn how to use them. Dense documentation makes it nearly impossible to pick up an API and start programming immediately. These new Codecademy lessons should be just as helpful to experienced developers as they are to total newbies. They'll help you get up and running faster than ever.
Amazing products and projects have been built on the APIs that we're starting to teach today. This is just the start - if you have an API you'd like to teach or one you'd like to learn more about, let us know! Let's build something great together.
Get started now!
On January 1, we proclaimed 2012 "Code Year." Our aim was to make programming mainstream in 2012. We thought that not everyone needed to be a programmer, but everyone needed to understand what programming was. Code Year launched and more than 450,000 people joined us on the journey, making their own New Years Resolution to learn to code.
Code Year brought amazing awareness to the importance of programming literacy. NYC Mayor Michael Bloomberg joined in, helping to turn his city into one of the most fertile for startups by pledging to learn to code. Weeks later, The White House realized the same thing and helped us champion a program to teach children to program. Schools everywhere contemplated including coding in their core curriculums, and politicians started the crusade to make more engineers in America.
We've seen tremendous success stories come out of Code Year and we've collected them for you to check out. These four stories are merely a small sampling of what's come out of Code Year, and there are stories all over the web. Ryan Hanna, who knew nearly no programming before seeing Codecademy and Code Year, launched his company Sworkit and has seen more than 100,000 downloads. Joah and Haley, meanwhile, learned bits of code on Codecademy and then created their own course to share with others. We think they embody true success on Codecademy - learning, building, and sharing back with the community.
At the same time, while we've seen tremendous success, all of us at Codecademy have spoken to the thousands of people who have let our emails languish unread in their inboxes. Kevin Roose of New York Magazine wrote a great apology to Codecademy last week and we understand where he's coming from. Making a commitment over a year and keeping it is notoriously difficult. We judge Code Year's success not just by the finishers but by the people who now are simply more interested and more aware of programming and the community that surrounds it.
SO, WHAT NEXT?
Sticking to your resolutions is hard. That's why, in 2013, we've done everything possible to make sure you'll come out a capable coder:
- Pick a project and build it - in 2012 people could "learn to code." That's a hard goal to achieve. In 2013, you'll build a project and you'll do it almost immediately. Build a website or build a game and learn the basics of code in the process.
- Timing - consistency is hard to achieve and starting small is the key. In 2012, people got emails every week. In 2013, you'll start small by achieving your goal in less than a month! Where you go from there is up to you.
- Pencil the time in - are you always "too busy" to finish your resolutions? Start off by putting the time in your calendar.
- Measure progress - we'll show you what people who stick with it can achieve. Track your own progress with our profiles and stick with it!
It's easier than ever to start now. Programming is empowering and we're proud to have helped thousands of people learn to code. In 2012, Code Year students built mobile apps with hundreds of thousands of downloads, taught thousands of people, and got better at their own jobs. It's 2013 - what will you accomplish with code?
JOIN THE MOVEMENT
Code Year is about more than learning - it's about creating. In 2013, let's make a community of creators, teachers, and students, all united by the power of programming.
Aprender con Codecademy ahora es más fácil para millones de personas.
Aprender a programar es difícil; ¡aprender en un idioma extranjero es aun más difícil! Ya no tendrás que preocuparte por el idioma: usuarios como tú nos están ayudando a traducir Codecademy al español, y nuestro primer curso, HTML/CSS, ya esta listo. Pruébalo y dinos tu opinión, esperamos tener muchos más cursos listos muy pronto.
Learning on Codecademy just got easier for millions of people.
Learning to code is hard; learning to code in a foreign language is even harder. That's why we've been working with users to translate our courses into their native language.
Have friends that speak Latin American Spanish? Now they too can learn the basics with our newly translated HTML/CSS track. You may just make their day.
Check it out!
Psst... Want to help translate? Let us know.
Just yesterday we released our latest project to the world: Code Cards! Now you can code your own holiday greeting with HTML, CSS, and just a touch of inspiration.
We wanted to showcase our five favorite cards, from a talking Spock to a bouncing Merry Christmas — check them out!
A moving CSS3mas!
A neon pink holiday
A bouncing Feliz Navidad
Happy minimalistic holidays!
Spock says "Logical Holiday" in Hungarian
Didn't make one? No worries, there's still time before New Year's. Enjoy!
Last week we celebrated a very special holiday for one of our Codecademists — Finnish Independence Day, or as we affectionately call it, “Findependence Day.”
Finland has given us many things in the land of technology, including the mobile communications company Nokia and the creator of operating system Linux, Linus Torvald — not to mention Santa Claus himself!
But most importantly, it gave us our lovely community manager, Linda! To thank the country for its kind gift we turned a wall into its giant flag and celebrated with specially-handcrafted cupcakes, courtesy of our interaction designer.
Happy Findependence Day, everyone!
Learning the basics of a programming language—its syntax, design, and features—is necessary to be able to write programs. Once you know the basics, though, you want to put your new knowledge to work to build something!
In order to provide more concrete things for you to build, we're rolling out Codecademy Projects. The courses in this track come in two types: basic and advanced.
While the advanced projects rely on the products you'll build in the basic projects and the basic projects rely on the knowledge you'll gain in the tracks, you don't need to do all the basic projects or advanced projects in order. As long as you're familiar with the prerequisites a project mentions, you're good to go!
As we develop more advanced and engaging projects for you, we'll continue to improve the Codecademy learning environment. We're confident you'll love all the new ideas and features we have in store.
Start your first project!
One of the most wished features in the community has been the ability to share your accomplishments with your friends on Facebook. Now it is possible.
Post your badges to a gallery on your Facebook timeline - just remember to set your account to public. And don't worry, you can change your sharing preferences at any time under account settings.