A Conversation With Summer of Code Winner Ethan Chiu

We sat down with our Summer of Code Challenge winner, Ethan Chiu. A motivated and hardworking high school student, Ethan's project focuses on bringing students together to help each other through peer mentoring in his school. We asked Ethan to tell us about the project and what inspires him to code.

Why did you choose to enter the Summer of Code challenge?
Since this challenge was during the summer, I knew I had more free time to code something awesome! Thus, I wanted to challenge my existing knowledge of programming and create a web application that would help my local community.

Where did you get the idea for StudyTogether?
I got the idea from talking to my peers who were tutors, and my friends who were getting help from my school’s peer tutoring system. My school’s existing peer tutoring system is pretty amazing. It is free and accessible to all students. It gives student tutors academic credit and teaching experience while students get an opportunity to improve on a tough subject with the aid of a free tutor.

Nevertheless, I found out that this system still had some downsides. From a high level perspective, there is no streamline process for this peer tutoring system. The system is unorganized because it is separated into different sections for each subject. Students have to search for certain teachers to get access to the peer tutoring system. More importantly, many struggling students don’t even know of this system because it reaches them through word of mouth. This system also creates a rigid and inflexible schedule for both the tutor and the student. Struggling students often don't receive enough help to succeed in future classes, and the tutor has to follow a cumbersome schedule.

Interestingly enough, I didn’t hear of this program until the last weeks of school. Therefore, I seek to improve the existing peer tutor system by making it more accessible, scalable, and flexible. My primary goal is to create a web application that would allow students who need help in all school classes to receive the help they need.

When making the app, I made sure to cater to my school. I tried incorporate three core values: organization, flexibility, and safety. I envisioned my web application to allow both student tutors and the students to schedule appointments with each other quickly. In addition, I envisioned that students can also choose a student tutor based on their experience, accessibility, and schedule, while tutors can get to know more about their students’ questions before hand. It is a safe and monitored system controlled by teacher admins. If face to face tutoring is not possible, peer tutors and students can communicate through the inbox or videocam system. Tutors can post their video tutoring session (always recorded) on YouTube so that others can learn.

Overall, I want this web application to allow students to receive the help they need. Hopefully in the near future, after I run a couple tests in my school, I can expand into other school systems, which will create a strong network of resources.

What were some of the difficult parts about coding your project?
Some of the most difficult parts came when I was programming the CSS. I often made silly and hard to find mistakes that would throw off my project. For example, it took me a couple hours to figure out I swapped the z-index of two different css classes which ruined the stack order.

What would you have done differently (or more of) if you had time?
If I had more time, I would definitely focus more on the backend and making the basic core functions of the website work. For example, I wish I could have spent more time on the login, calendar and videocam parts of my web application. Overall, I would have taken more risks, such as experimenting with different front end frameworks link AngularJS.

Which courses were the most useful for you when creating your project?
The HTML/CSS, JavaScript, and jQuery skill courses gave me a solid foundation to grow from. The Web Developer Skills courses such as Make an Interactive Website gave me some inspiration on what beautiful websites could look like. Overall, these courses allowed me to create a website from scratch.

Where did you turn for support when creating your project?
For this project, I really wanted to debug everything myself because I wanted to challenge myself as much as possible. I didn’t turn for much support besides using Inspect Element and reading the Bootstrap documentation. Before the project, when I needed support for programming, I always turned to the amazing Facebook group called Hackathon Hackers for help. They are a great community of supportive developers.

How do you hope to continue your project, now that you'll have support from a Codecademy engineer?
With the support of a Codecademy engineer, I hope to make my website’s core backend part, the calendar and scheduling function. Also, I want to improve the UI/UX of my website. Having been using the Codecademy platform for the past 2 years, I am amazed by how Codecademy constantly improves their website’s design to make it more user friendly. More importantly, I want to develop good programming habits and learn from the experiences of a Codecademy engineer.

What do you hope for this project in the future? How would it function ideally?
I plan to integrate my school’s email system with my website so that login is fast. Specifically, I want to create three different user accounts: student, tutor, and admin (teachers). I want to create a more flexible calendar system and a more aesthetically pleasing calendar system that makes scheduling easier by combining the best elements from Doodle and Google Calendar.

After developing this core function, I hope to create a system where users can type in their basic information so that they can effectively pair each other up for tutoring. In addition, I want to incorporate a video meeting system where tutors can teach their students. Lastly, I also want to make my website mobile friendly.

What's next for you?
Right now, I am currently working on the login functionality with passport.js. When I am done with the login system, I plan to finish the core functionality of implementing the calendar system. Obviously, there is still a huge learning curve out there. I have had no real experience with backend development so I hope I can learn from Codecademy’s SQL course and move on from there.

Other than working on this project, I am developing the front end for a startup called UScanTechnologies, and I am leading the development phase with my Co-Founders for my startup called DrumSense, Also, I founded and am directing WellesleyHacks, a 10 hour hackathon for high schoolers. WellesleyHack’s goal is to help participants of all levels to create a web, mobile, or hardware hack that they are proud of. Lastly, I am attending various hackathons throughout the year. In fact, I am attending my first hackathon out of the States next week (HackTheNorth), and I’m really excited for that!

From Retail to Front End

How and why did you get started with coding?
I started coding at first because I was interested in what my husband did for a living. He showed me a few sites where I could learn more about programming and broaden my career opportunities. I started using Codecademy. It was fascinating how easy it became to build something using code. It also made me see that most people didn't even know what coding was unless they had to learn it when they attended college.

What were your goals when starting to code and how did you keep motivated?
At the time I started using Codecademy I was working in the retail sector so there was no time for family. My weekends were never my own and I would be off when everyone else was working and when my son had to attend school. My motivation was wanting to be there for my family. When I started a section in Codecademy, I would study and do the exercises before and after work, even during my lunch breaks to finish the course so that I could move out of retail and do something I found interesting and fun.

What was the most challenging part of learning how to code, and how did you rise above those challenges?
The most challenging part was understanding the concepts. When I started learning, everything had to have a reason as to why it needs to look a certain way or why would it do something. I needed to let go of some of the ways I was accustomed to, to learn and see the bigger picture.

How did you start creating your own projects?
I started creating my own projects when I went for my first programming interview. I had an internship where I was able to help build projects for others. I worked on projects such as That Art Fair, Shanduka Foundation, Kagiso Shanduka Trust, and IYO Media.

What advice would you have for folks who are just starting out or thinking of getting started?
Finish what you start. You cannot go into coding if you do not plan on using it all the time. Anyone can start coding and anyone can be great at it if they stick to it and make it fun. Only you can see what it is you want to do with what you learn. Starting out can also be confusing and seem difficult but don't give up, keep at it and you will start understanding concepts that move you forward. Coding is a unique talent that anyone can learn—so take the opportunity to learn it.

How did you get to where you are now? What did you do after Codecademy?
I finished some Codecademy courses and went for an interview at a company in Cape Town, where I started an internship and began gaining some experience in web development. At that internship, I helped build four websites. We moved to Johannesburg and I got an offer at a great company where we build a little bit of everything. I'm currently a Front End Developer at Mann Made Media, and up until today I still use Codecademy to learn different coding languages that I don't know.

Which steps would you recommend for folks who want to find jobs after Codecademy?
Look for an internship where you can start gaining experience. Any company will take you as long as you have something to show for your learning. Many companies don't know that you can learn to code on the internet. My current company was impressed that I got as far as I have while working a full time job and learning at the same time. I am living proof that it is possible.

As for the ladies out there, this career is for you too. I was a single mom at the time when I started learning. Take on something different and something challenging and jump at this wonderful learning opportunity that is free for you to explore. Codecademy has helped me learn everything I needed to, to move forward in my career. This learning has helped me overcome challenges in my life and taught me never to give up if something doesn't work. Find your motivation to do something challenging and different.

Getting To The Aha Moment

How and why did you get started with coding?

Growing up in parallel with the video game industry, I was always interested in video games and working with computers. When I was young, my grandmother worked for Phillips and she gave us a Phillips G7000—the Magnavox Overseas. It was a cartridge game machine similar to the Atari 2600 and we played it to death. I discovered that one of the cartridges allowed you to do basic hexadecimal coding and I started to draw sprites and move them around the screen. I was hooked.

In my teens, my parents got us a Commodore 64 and I started to fool around writing simple text adventures in Basic. However, I never pursued coding and instead focused on art and design and it was later when I was working in a team building and deploying web projects that one of the developers showed me some simple things I could do with Javascript and HTML. I quickly realized that with HTML I could realize my dreams of making a game. I found Codecademy and started the Javascript course and it all started click, I had the ‘Aha!’ moment.

What were your goals when you started and how did you keep motivated?

As an iPhone user, my main objective was to be able to make a game and deploy it to the Apple App Store. I didn’t really need to be motivated because I’ve found that coding is something that I really enjoy doing. It’s so satisfying when you run your code and it just works or when you’ve got a bug in your code and then when you finally figure it out and everything works, wow! That’’s a buzz!

What was the most challenging part of learning to code, and how did you rise above those challenges?

After deciding on what language/framework to learn, the hardest aspects for me have been learning the syntax and understanding the various coding concepts and paradigms. Originally I thought that programming was a finite thing, but I’ve discovered over time that there are lots of ways of the doing the same thing. What is best in one situation might not work well in another.

How did you start creating your own projects?

I was interested in making games, so after I finished the Javascript course on Codecademy, I started to research a good HTML5 game engine. I ended up going with ImpactJS. It has a good API, is really well documented, and the community around that engine are really encouraging and helpful. The developer of ImpactJS also has another open source project called EjectaJS which binds Javascript to Objective C. This meant I could deploy onto iOS with minimal effort—perfect!

Then, I prototyped a few ideas and when I found something I thought would be fun, I committed to it and gave myself a 6 month deadline to build it. As I have a background in design, art, and animation, I was able to create all of my own assets and was able to focus most of my energy on building.

What advice would you give to folks just starting out or thinking about getting started?

Like they say, just do it. It seems hard at first but honestly it doesn’t take long before it all starts to make sense. Like Neo from the Matrix, the world opens up and you start to see everything in 1’s and 0’s. I’ve discovered that once you can understand and read one language, you soon discover that the concepts and structures are similar across all languages. Being able to read and understand code is such a valuable skill in this day and age. Learning to code is very empowering.

How did you get to where you are now?

I founded a game studio, Rungo Games, and have released my first game Devil’s Doom to the App Store. I’m now working on the Android version, and after showing the game at a local game conference recently (AVCON) I’ve had a lot of requests for a PC release of the game too. You can check it out here.

Moving forward, I want to continue to improve my skillset and release more games. Ultimately it would be great to work with one of the major game developers, so that’s certainly a goal. Hi Ubisoft :smile:

What steps would you recommend for folks who want to find jobs after Codecademy?

Build a web page, start a dev blog. Start building personal projects so you can show people what you can do. Talk to people you know who code and pick their brains. Keep on learning, don’t give up, and remember that after just one course at Codecademy you’re probably already ahead of 90% of people!

Codecademy Partners With The White House

As part of the White House #TechHire initiative, Codecademy is excited to announce our new partnership with the Obama administration, focusing on helping underrepresented and diverse groups of citizens get the skills they need to find jobs through code.

Programming is the future—a coding education gives anyone the ability and skills to create their own future, businesses, and stable foundations. At this time, wide access to computing education for students is missing. We hope to bring it up a notch through free coding courses, available to anyone with an internet connection.

As a leader in coding education, we find ourselves with a responsibility to help others interested in technology to take the next step. Partnering with Libraries Without Borders in New York, we’ve pledged to reach out to 600 underserved and minority students to participate in Codecademy Meets. This series of events will start at our NYC Codecademy HQ, then grow to different parts of the country, including learners from all backgrounds.

At Codecademy Meets, our Codecademy team members will talk about today’s importance of a tech education, and go into detail in why and how coding can change lives, create jobs, and nourish skills, as well as provide resources for folks to learn on their own. We’ll be learning hands-on with Codecademy courses that teach valuable programming skills necessary to get started on a new path in technology—all for free.

Coding is for everyone. We’re here to bring it to everyone.

One Year to Dev

How and why did you get started with coding?

I got my degree in Finance and although I started off in accounting, I kept seeking out more and more technical roles thought my career. After moving to the bay area 2 years ago, landing a job at a startup and being immersed in tech, I started realizing how passionate I was and how much I wanted to be a part of it. Then a year ago, I decided to do a complete career change and see if I could get hired as an engineer at my company.

What were your goals when starting to code and how did you keep motivated?

My big goal when I started learning was to be able to pass a coding interview and get hired on as a full time engineer within my company. I think what kept me motivated was setting a deadline (I gave myself a year) and having accountability. I set up a github repo with coding problems I was working on and would tag friends and coworkers in engineering to review.

What was the most challenging part of learning how to code, and how did you rise above those challenges?

For me, the most challenging part was learning to being comfortable with how things start to click over time and not right away. The analogy I use is that it’s like learning to fix a car. You don’t start by buying a physics textbook and diving into combustion theory. You’d learn what some of the parts are called and how they generally work and start getting your hands dirty without even popping the hood. Before getting into programming, I’d been used to picking up new things quickly and it was a struggle to be patient while the concepts came together over time.

Which resources would you recommend to folks just starting out?

It depends on your learning style but I found a combination of books, online tutorials and in-person classroom training worked best for me. Besides Codecademy, these were some of the most helpful for me:

Programming Ruby, Rosetta Code, Codewars Ruby, Cracking the Coding Interview, and Guide to Ruby.

What advice would you have for folks who are just starting out or thinking of getting started?

My advice would be to be patient, know that this stuff is really challenging but it’s absolutely do-able if you’re motivated and there are so many great resources and people dedicated to helping people learn to code. It’s a really great time to do it.

How did you get to where you are now? What did you do after Codecademy?

Currently I’m a software engineer at Airbnb. I got here by setting a very clear goal, talking to a lot of people about what I needed to do to accomplish it, and working extremely hard. I actually still use Codecademy pretty regularly for examples of things I run into while working on projects and to pick up the basics of a new language. It’s really great at getting you up to speed quickly.

Which steps would you recommend for folks who want to find jobs after Codecademy?

A lot of companies are still hesitant about hiring people without a traditional CS degrees, so a good piece of advice someone gave me was to build a case for yourself to show why you’re qualified. Have some some personal projects on your resume and use things like internships and temp work to get in the door. Also, I was initially turned down when I pitched the idea of transferring, so don’t be afraid to apply repeatedly and for lots of positions.

What would you say to women who may not think they can get started in coding?

Imposter syndrome is amplified for women in STEM fields because they are a minority. I think a hurdle of anyone learning something new is the intimidation a large and ambiguous goal like “learning programming”.

What helped me was breaking things down into smaller goals; get through this problem set, build a really simple web app, read this book. I am also lucky to have a large group of female friends who are engineers and that support network was crucial. Get involved in the community, go to the meetups and surround yourself with people who can give you the support you need to stay confident and motivated.

Watch Kari's video on how she got to where she is today.

How I Went From Finance to Engineering in a Year

HTML & CSS projects are up on Codecademy

Our new web projects are here!

What’s New?

You asked for more projects, and we answered with 15 new HTML and CSS projects up on Codecademy!

Our HTML/CSS projects are designed to let you practice what you’ve learned in the HTML/CSS and the Make A Website course. There are 5 levels with 3 projects in each level. As the level increases, so does the difficulty. Once you’re done, you’ll have all the knowledge and practice you need to create your own website with concepts learned from each project.

HTML CSS projectHTML CSS project

Why do projects?

Not only will you practice what you’ve already learned, you’ll explore new concepts by diving into the resources we’ve provided in each project. For example, you’ll learn how to go in depth with the Bootstrap grid, and how to use the HTML video tag—all on your own, applying these concepts to your projects as you go.

Choose to follow the end result example, or customize each project to reflect your own interests and personality. Completing these projects will get you working like a real developer, solving problems, learning new concepts, and creating something unique all on your own.

Ready to try your hand at a project? Get started here!


We've heard from a lot of users that they wanted to connect to Codecademy securely, and now you can. Today we shipped full HTTPS support for the Codecademy site: https://www.codecademy.com

As a Codecademy learner, all of your login credentials and other browsing activity are now encrypted. This means attackers can't snoop on your internet traffic to intercept your Codecademy password, or observe what you are doing while logged in.

The transition to HTTPS has been a bit tricky for us because our website embeds user-created websites in our learning environments (see the Learn Ruby on Rails course for example). This means that our HTTPS connection status is impacted by the contents of those users' projects. We have done our best to make sure we are loading secure versions of resources like scripts, stylesheets, and images wherever possible.

If you have been on the platform for a long time, you may find certain images in your old code are no longer loading—this is a restriction put in place by web browsers. Please replace them with an image available at an https:// URL to fix the problem.

If you find any issues with the HTTPS version of the site, please let us know! Shoot us an email at contact@codecademy.com.

Artur Sapek
Engineer at Codecademy

From lawyer to iOS Developer

How and why did you get started with coding?

I got started with code because of the job market in the legal industry. About a year and a half after I left law, I started work in Quality Assurance at an ad agency that produced websites. All that was required for that job was attention to detail and some working knowledge of basics with the browsers. I just told the developers what was wrong on the site or if there were spelling mistakes. There, I was introduced to the process of software development, and to the developers themselves. I was impressed by the good salaries my friends were making and the fun they were having at work.

Building or making something was a part of it, too. I never really considered this important for me until I tried my hand at woodworking. The moment I sold my first piece, I knew I had to keep making things in life. The first code I typed was through the console on Codecademy.

What were your goals when starting to code and how did you keep motivated?

My goal was to become an iOS developer. One of my co-workers showed me some really cool resources, and I joined him in learning. What kept me motivated was knowing that I would eventually turn a leaf and reconcile leaving law. Leaving law was difficult in that being a lawyer was my identity for a substantial part of my professional life, and I often struggled in thinking that I made a mistake.

Looking back at it now, having a law degree in the technology industry is quite the asset. A lot of the thinking and attention to detail in software development is honed in law school and law practice. I often like to compare coding to something like motion writing - instead of writing for a judge in natural language, you’re writing for the computer. There are a set of rules, and you can help determine the outcome by what you write/code.

What was the most challenging part of learning how to code, and how did you rise above those challenges?

The most challenging part is simply learning the foreign looking syntax and understanding the purpose of doing certain things. For example, when studying object-oriented programming, it took me months before it finally clicked. There’s simply no way around it but to put in the hours. It may seem difficult for a beginner to believe, but by the time you put in your 600th hour coding, a lot of things will just make sense in your mind, and muscle memory will kick in.

What advice would you have for folks who are just starting out or thinking of getting started?

Work through HTML, CSS, JS, and either Python or Ruby, then decide on the type of development you want to do. If you’re a fanatic about Android, for example, start learning it, and stick to it until your 1000 hours is up.

A mistake that I started having was thinking that perhaps a specific framework or platform wasn’t suited for me, and that X might be better. The moment you start acting on this, the longer it will take for you to learn and get a job doing it. If you want to be an iOS developer, or Rails developer, make the commitment, and work through the resources online until you get it. The fundamentals of programming are all the same regardless of language.

You should also seek out other developers in meetups for the community you’re in. Get close to your designer friends, and start working on projects that they have in mind. Having someone else work with you keeps you accountable, and your product will be more polished in the end. Once you go pro, you’ll see that design and code is very much hand and hand - like peas and carrots.

How did you get to where you are now? What did you do after Codecademy?

After Codecademy, I used some resources from Ray Wenderlich. They put out a lot of great iOS development guides and tutorials. The guide I did work through was the iOS Apprentice which goes over the development of four different iOS apps, from the trivial such as working with the basics of drag and drop UI to the more complex like working with APIs and persistent storage.

During this time period, I built four apps, and won a team Hackathon. I started applying to see what the job market was like, and next thing I knew I was getting callbacks and interviews.

Which steps would you recommend for folks who want to find jobs after Codecademy?

Seek out a position in manual QA at any development house, agency, or company. Despite the requirements they may have on their listing, all these jobs require are good communication skills (to talk to both the developers and the business folks) and attention to detail. I believe web QA in general has the lowest barrier to entry (compared to hardware QA). Complete the HTML, CSS, JS and one OOP language on Codecademy, then create your own website such as a resume/bio site, then go shopping for employers.

Once you’re there, soak up the knowledge from the developers and business folks. Then plan your exit as you sharpen your programming skills. An employer will feel much more comfortable hiring you if you’ve had experience in a software development environment.

How did you feel about switching your career, and what can you say to others who want to make such a change?

I feel great, and I feel like I made the right choice. The power of the software industry is undeniable.

Lastly, it all comes down to your personality type, and what defines your essence. If making and creating value as opposed to shuffling paper around resonates with you, then your choice should be clear.

Curiosity as a means for growth

How and why did you get started with coding?
I'm from Australia and 3 years ago, in my early 20s, I had no idea on what I would do with my life. A lot of my mates would graduate from university soon, and I didn't have a degree or any experience in any meaningful field. I had always liked and math and science based subjects. I was lucky to be very curious and had always been a problem solver.

I had been interested in programming before, and I stumbled across Codecademy on Reddit. Within one day I had put in 6 hours straight of the Make A Website course and my passion for programming was ignited.

Coding is just like problem solving. There is only one answer but multiple ways of getting there. The different ways could be different frameworks, different patterns, different difficulties in complexity, readability, size, etc. You can attack any problem and with enough time (and of course, google) you could find an answer that works.

I love the coding community—there is a real sense of camaraderie. The best evidence for this for me was Stack Overflow. The amount of effort some users gave to help others solve problems for no personal benefit (except the practise from explaining something—a hidden gem) was just amazing. That being the case, despite the fact I didn't have a teacher or mentor, I felt very safe and looked after by this community.

How did you find the time to code? Did you have a schedule?
While I was in the US, there was not much to do outside of work. I had probably a few hours a day, maybe 3 or 4, which I would dedicate to coding. I didn't see it as a chore—it was a priority in my schedule because I was just so interested in it and excited about it. Some nights I would be up late trying to figure something out and had to force myself to sleep so I could get up in the morning to go to work. Then all day at work I'd be thinking about how I can attempt the problem again.

I was lucky enough to have passion and a desire to be better and solve complex problems, and with that mindset I was able to prioritise my time to spend a lot of it coding. Not that it was easy, but its not meant to be easy, and that’s the fun of it.

What were your goals when starting to code and how did you keep motivated?
I never really had goals. For me, coding isn't some race to the end where you can say you are done and then pack up and go home. If you thought about it that way, you'd never get there, and you'd give up. Coding is an ongoing battle which you never 'win', so you must think about it in micro-achievements.

Stay motivated by setting tiny accomplishments, and getting better every day. Every line of code you write is practice. Sometimes you will spend hours on some bug or concept you just can't grip. Once you manage to tackle and beat the problem, you must realize that you used all those hours exercising your debugging brain, and next time it will be stronger and you will make connections you otherwise couldn't have made without those hours of practice.

What advice would you have for folks who are just starting out or thinking of getting started?
Try not to get too caught up in all the possible options, especially for webdev. There are so many new libraries, new tech, new frameworks etc etc. its sooo overwhelming. Try not to worry too much. Start learning something and make something of it.

Never say die. Some of my personal lowest times ended up being some of my biggest growing moments and boosts of confidence. Now when anyone asks me if xyz possible I say "yes". Anything is possible, it just takes time.

How did you get to where you are now? What did you do after Codecademy?
After Codecademy, I started building static template websites using bootstrap. I played around with BS a lot and tried using all its components. I was playing with jQuery and I found its API pretty straight forward to use. While I didn't understand how it worked, I was able to build some very cool things. Its a tough balance between making something that works and understanding all the tech behind it.

After making some static sites, I wanted to move to something more dynamic. First I played around with Ruby on Rails and took the Codecademy Ruby course. I also watched the one month rails tutorials by mattan griffel. I built a few little web apps. After building things with a backend, I started learning about AJAX and the true async nature of JS. This was a very hard concept to master, but playing with AJAX forced me to learn.

Around this time I was lucky enough to land a job. I was thrown in the deep end and it was 5 days of building a custom themed Wordpress site. I had hardly used PHP (only at Codecademy) and had never seen Wordpress. The project was a success and I was hired as a junior developer. I didn't know much in the world of programming or web development, and while I was always honest to say that 'hey I haven't done that before', I always made sure that I followed that up with 'but I can find out how to do it, and it can be done'.

Since getting the junior developer position, I quickly turned myself into a full stack developer and was setting up servers from scratch and writing APIs and customising backends for apps and websites. A year and a half into my work, I became a lead developer.

Which steps would you recommend for folks who want to find jobs after Codecademy?
Meet people—use Meetup to find coding, webdev, ruby, python, javascript groups in your area. Look for people who you might know in the industry and meet them for coffee and pick their brains. Have personal projects to show—examples of how you have used the tools learned about. Make good impressions.

Introducing Learn AngularJS

What’s New?

We’re proud to introduce our new Learn AngularJS course!

AngularJS is a JavaScript web framework aimed to make single-page web apps simple to build and easy to maintain. It's a popular framework for building web apps, and is used by many companies such as Google, Apple, Udacity, and HBO.

In this course, you'll quickly learn the essentials of AngularJS. By the end, you'll be able to use AngularJS to create custom web apps of your own. You'll build 14 web apps to get a solid foundation in the framework, including a Top 10 app site, an email app, and a local search app. If you’ve completed our JavaScript course, you’re ready to start on AngularJS and take your skills to the next level.

Why Learn AngularJS?

We decided to build our Learn AngularJS course as a next step for learners wanting more advanced content. Learning a JavaScript web framework such as AngularJS is the next step when getting familiar with building web apps of your own.

Looking for a web developer job? AngularJS is increasing in popularity, both in the developer community and in many tech companies, making it a very useful employable skill. Pair your learning with our jQuery course for a well-rounded approach to creating modern web apps with JavaScript.

We can’t wait to see what you create!

Introducing Ruby on Rails: Authentication and Authorization!

We’re proud to announce the launch of our brand new Ruby on Rails: Authentication course!

What’s New?
In this course, you'll learn how to build an authentication system and an authorization system from scratch. When you’re finished, you'll be able to write your own custom authentication system as well as use third-party systems.

Want more advanced content? You got it—we built Ruby on Rails: Authentication for learners who have finished our Learn Rails course eager to go on to more advanced topics that will help them create their own web projects and further their skills.

Why Authentication and Authorization?
Many web apps let users sign up for a new account as well as log in and out of their accounts. Together, signing up, logging in and logging out make up an authentication system. Most apps use some form of authentication to ensure that only signed in users can access content.

In addition to authentication, many web apps have a way to give specific users permission to access certain parts of the site. For example, a blog would give only its authors or admins permission to access the editing and publishing parts of the site. Permissions are defined with an authorization system.

Expand your web app by learning authentication and authorization with our latest course. We can’t wait to see your projects!

Learning To Think Differently

How and why did you get started with coding?

I had an eBay store, but my listings never attracted a great deal of attention. I noticed the professional sellers had fancy templates for promoting their products and I came to realize that in order to compete, I’d need to create my own. I went to Codecademy and completed the HTML/CSS and JavaScript tracks and soon had the skills to create my own professional templates. More importantly, I’d uncovered a hidden passion for programming that would go on to shape not only my career, but the rest of my life.

How did you find the time to code?

I’d been working full-time in banking and part of my daily commute consisted of an hours train journey. I began to use this time to complete the courses on Codecademy. I even set up a second account so that I could go over the courses again. I would read books, watch tutorials, write code for fun, anything I could do to improve my knowledge. It could be hard to find the time, but the satisfaction was always worth it.

What were your goals when starting to code and how did you keep motivated?

I’ve always been a big fan of Apple products. Since the launch of the App Store, I began using apps on a daily basis and after starting Codecademy it made me realize that I could build my own apps. I could bring my own ideas to life and maybe help improve the lives of others. I set about using what I’d learned through Codecademy as the basis for learning C, C++ and Objective-C and within a few months I had my first app on the App Store.

What was the most challenging part of learning how to code, and how did you rise above those challenges?

There’s no doubt about it that when starting out, programming can be hard and having no one to ask when you get stuck can make it even harder. I soon came to realize that it’s OK not to understand everything straight away and that the key is to persevere and remain positive.

What advice would you have for folks who are just starting out or thinking of getting started?

There’s no better time than now to be getting into programming, it’s clear that being able to read and write code is going to play an integral part in our future and the future of our children. Don’t just be a consumer of technology, be a creator, programming is about more than having the next hit app, it’s about training your mind and learning to think differently, but most importantly, have fun!

How did you get to where you are now?

After realizing a career in programming was something I wanted to pursue, I wrote to app development companies offering to work on a voluntary basis one day a week. I was offered an interview, which resulted in a full time position at one of the top app development companies in the UK. It came with a sizeable pay cut and a 3-hour drive to the office and back everyday, but I was over the moon.

During this time I was fortunate enough to build apps for some large well-known organizations, along with gaining valuable experience from some of the best developers in the industry. Today I work full-time as the sole iOS Developer for an international betting company, I run my own contracting business and have three apps on the App Store.

My advice for anyone looking for a career in programming would be to put yourself out there, try to make your own opportunities and if you’re passionate about what you do and willing to put in the work required, everything else will fall into place.

Start where Ash started by learning HTML/CSS.
Want to share your story? Email us at stories@codecademy.com.

Introducing “Learn Rails”

We’re proud to announce the launch of our new Learn Rails course!

What’s New?
Ruby on Rails is a popular web framework used by companies like Airbnb, GitHub, Groupon, and Codecademy that makes it easy to build dynamic web apps in a short amount of time. You can use Rails to build apps, websites, games, and more—all in an easy to use and popular framework.

When building Learn Rails, we had a few basic concepts in mind. We wanted the course to be accessible, quick to complete, and fun to do. We decided to shorten the Learn Rails course time and created 12 hands-on projects that users can work on throughout the course. Coding is exciting, and the new Learn Rails format makes it easy to grab on to concepts and apply them in useful projects.

Why Learn Rails?
You might notice that Learn Rails is our second Rails course on Codecademy. We listened carefully to the response from students after our first course—Make a Rails App. Students from our in-person Codecademy Labs classes felt they needed more practice before they could create a Rails app on their own. We responded by creating a new course, Learn Rails, to give all of our learners the skills they need to feel confident in coding custom Rails apps.

At Codecademy, we try to learn as much as possible about how learners use our product, and how we can improve. We’re dedicated to our “learn by doing” experience, helping users feel rooted in what they learn, and confident in being able to build their own real-world Rails apps.

We can’t wait to see what you create with Learn Rails!

Happy coding!
-Bana, Content at Codecademy

Codecademy & the 2015 State of the Union: Education for the Jobs of the Future

In his 2015 State of the Union Address, the President singled out technical education as a cornerstone of the effort to skill and re-skill Americans for the jobs of today. The President’s focus on equipping Americans with the tech skills necessary to keep the country competitive for the jobs of the future puts Codecademy one step closer to our mission of training and employing previously-unskilled workers in American technology jobs increasingly available across all industries.

Over the last three years, we’ve worked to build the easiest way to learn to code online. It’s been our belief since the beginning that any effort to keep Americans competitive and fully employed in the labor market of the 21st century would need to center around re-education, and that effective coding education could be built to reach anyone with an internet connection.

In November, we partnered with the leading non-traditional providers of coding education across the country to launch ReskillUSA, a partnership designed to educate Americans on the range of options that exist to teach absolute beginners the skills they need to find meaningful work.

Codecademy, alongside the educators involved in ReskillUSA, is thrilled that the president has come out in support of re-educating Americans to meet the demands modern labor market. We hope that his announcement helps focus debate about the American skills gap on how to re-educate our technical workers, and are grateful for The White House’s support as we continue to equip Americans with the skills for tomorrow’s technical jobs.

Codecademy on Campus: Launching UK Student Brand Ambassadors

So far this year, we have helped bring coding to classrooms in over a 1000 schools across England, and now we want to expand our reach and bring the skills required for 21st century jobs to Universities all over the country.

What does being a Brand Ambassador mean?

We are looking for passionate and innovative university students to represent Codecademy on their university campus. A brand ambassador’s main goal will be to improve awareness of Codecademy as a free resource, to improve an individual's chances of getting a job. We want our brand ambassadors to hold Codecademy events and workshops, create communities of users who can support each other and provide outreach to local schools to continue our support to teachers in delivering the new computing curriculum. We want you to dedicate at least 5 hours per week to helping create these communities, and want you to hold the position for a full academic year.

What is in it for you?

You will be the face of Codecademy on Campus! We believe brand ambassadors will gain invaluable experience in event management, marketing, coaching and training. You will also gain insight into a fast growing start up as we expand internationally, with the opportunity to help shape Codecademy’s strategy and vision. This role will also offer great opportunities to network in the local start-up scene, summer internship opportunities and of course you will receive some awesome Codecademy merchandise!

How do I apply?

We accept single and group applications. All we require is a familiarity with Codecademy and that all applicants are currently students at a UK University. If you are interested, please send your CV and answers to the questions below with the subject line "Codecademy Brand Ambassador" to Rachel Swidenbank at rachel.swidenbank@codecademy.com. The deadline for applicants is 8/10/2014, but ongoing applications will be reviewed.

  • Why is coding so important to your generation?
  • How could you create a Codecademy community in your University?
  • Why do you think Codecademy should support schools?

The New Dashboard

Starting today, we’re introducing a new, redesigned Dashboard that unifies the old dashboard with the course catalog. We’ve done this for two main reasons: to make it easier to browse the content on Codecademy by putting all the skills you can learn in a single page, and secondly, to make it easier to gauge your overall progress on the site. Now, on the new Dashboard, you’ll be able to see which skills you’ve started learning—as well as your progress in them,—and which ones you’ve completed.

You’ll also notice that we’ve opened up some room in the header. Don’t worry, your points are still alive and, as before, you can look at how you’re doing by accessing your Profile. Clicking the Codecademy logo will lead you to the new, unified Dashboard page. As for the Teach page link, you’ll now find it in the footer.

The final change you’ll notice is on the Profile. Now, your Profile will show only the skills you’ve completed. This is also where you’ll find Codebits.

We’re excited about these changes and we’d love to hear what you think. We’re committed to constantly improving your learning experience, so stay tuned for more updates!

Leveling the Playing Field for Women in CS with DonorsChoose and Codecademy

I’m proud to announce that Codecademy is partnering with DonorsChoose.org and Google in an effort to double the number of high school girls studying Computer Science. Google.org has committed $1 million to fund $125 DonorsChoose rewards for girls who complete a special Codecademy course. Meanwhile, teachers can earn an additional $500 in classroom rewards when four of their students make it through the course.

Education in critical skills should be accessible to everyone, regardless of their gender, where they live, their income, or any other factor. When we started Codecademy, there was a gap between the skills needed to find a job and the education available to students across the world. Programming, in particular, showed a massive achievement gap, with females representing only 12% of Computer Science degree graduates. We think fixing this problem requires efforts on many fronts: increasing the availability of education, providing role models for future students, and incentivizing students and their teachers to take the first step towards learning CS. We hope that today’s announcement will bolster the number of students who are exposed to Computer Science and choose to study it later in their academic careers.

Today’s partnership has another benefit beyond introducing more women to Computer Science. By working with DonorsChoose.org, we’re ensuring that the $1m in rewards that are disbursed help to improve access to technology and classroom materials. Every time a student completes a Codecademy course, they are helping to purchase new materials, like tablet PCs, textbooks, and more, for their classrooms. Not only are we better preparing our students, but we’re better preparing our classrooms as well.

At Codecademy, we spend every day focusing on how to increase access to the skills that everyone needs to find a job in the twenty-first century. Today’s announcement is one part of the solution, but it’s not the only one. Codecademy, along with DonorsChoose.org, Google, and so many others, will continue to work to make sure a great education is accessible to all.

Making Code the Universal Language

In 2013, I landed in Shanghai for a few meetings. My first few minutes walking around the city led to a conversation with a stranger I met in a bar after his long day of work. We discussed life in Shanghai, where he lived, how long he’d been in Shanghai, and what he did for a living. He told me he had just landed a new job with a programming consultancy in Shanghai, and said it all started with a website— Codecademy.com — through which he’d learned to code.

This scene repeated itself months later in Dublin, where I was meeting James Whelton of CoderDojo. We talked about programming education and noticed the couple next to us were talking about programming too. It turned out that they were both Dublin-based programmers - he for Facebook and she for a software consultancy. She talked about how she was planning to leave her job writing Apex (for Salesforce) to take a job writing Ruby, which she had just learned on Codecademy.

These stories aren’t unique — in fact, they’re a reality for most Codecademy users, 70% of whom live outside the United States. From the beginning, we’ve watched with amazement as Codecademy spread. The day we launched, we expected traffic to die down overnight in California, but we hadn’t taken into account that people were just signing on in other parts of the world. Since then, we’ve kept our global audience in mind with everything we’ve built, realizing that the power of an education transcends borders beyond the city we build Codecademy in and the language we speak.

Codecademy: Bringing Skills to You, Wherever You Are

Today, we’re bringing easy access to a world-class skills education to even more people across the world — hoping they’ll benefit from Codecademy in the same way that our more than 24 million existing learners have. We’ve worked to translate Codecademy to Spanish, Portuguese, and French, with more languages on the way. But that’s not all — we’re working closely to create communities and become embedded in new countries to help new learners all over the world become empowered with the skills they need to succeed in the 21st century. We’ve got amazing partners to help us bring Codecademy to five new countries (along with those that speak their languages!).

United Kingdom

The UK made news as the first G8 country to mandate programming education for all primary and secondary schoolers. We’ve worked hand-in-hand with many organizations in the UK over the past few years — sponsoring Code Club as they bring programming education to after school groups, working with the Computing At School network to help connect teachers with resources, and with the government itself to bring programming to classrooms — and we’re now doubling down on our commitment to the UK by opening our first international office in London, headed by Rachel Swidenbank.


Libraries Without Borders (Bibliothèques sans Frontières) has worked tirelessly over the past few years to expand access to literacy across French-speaking countries, among them Haiti, Cameroon, and others. Today, Codecademy is working with Libraries Without Borders to translate Codecademy into French and to implement pilot programs to reduce unemployment and including programming in schools. In addition, Codecademy will be a component of the recently announced Ideas Box (designed by Philippe Starck), a project that will be deployed in refugee camps and disaster zones across the world to empower individuals with the skills to improve their lives. Grants from the public and private sector in France helped to make all of this possible.


The Lemann Foundation is the largest education foundation in Brazil, funding innovation on the K-12 level and elsewhere by fostering innovation inside the country and by bringing international technological developments to students. Codecademy is available in Portuguese today thanks to close work with the Lemann Foundation and will soon launch in several Brazilian pilots. One of our proudest moments was talking to Brazilian teachers a month ago in São Paolo about today’s launch of Codecademy in Portuguese, their native language.

Argentina and Buenos Aires

The Government of Buenos Aires, led by Mauricio Macri, has made an ambitious commitment to bringing skills and programming education to all of their citizens by working together with Codecademy. Jorge Aguado, the head of educational technology for the City, has worked to make sure that Buenos Aires is one of the first cities in South America (and the world!) to make a statement about its digital future, tying programming into every school in Buenos Aires, pursuing a campaign to provide skills to the unemployed, and to train government workers with technology. Both we and the government of Buenos Aires think this is the first commitment of its kind in the South American region and think it’s a terrific template for other cities (and governments) moving forward. Buenos Aires’ commitment is particularly notable given that its Spanish translations will be available to the entirety of the Spanish speaking world.


Estonia’s Tiger Leap program has helped it become one of the most advanced digital economies in the world. We hope to support this commitment by working with the Estonian government to help every Estonian K-12 student learn to program.

Codecademy Speaks Spanish, Portuguese, French, and more!

It’s often said that code is the “language of the 21st century.” We at Codecademy think that code is a language that’s cross-border and truly international, and that our new work internationally is an essential step towards bringing advanced digital skills to people all over the world. We can’t wait to hear stories from the millions of new Codecademy learners to come and from the additional partners we’ll be announcing soon!

Building education for the world isn’t easy -- technically or from a product perspective. Want to work on projects like this? We’re hiring!

EventHub: Open-sourced Funnel analysis, Cohort analysis and A/B testing tool

As product development becomes more and more data driven, the demand for essential data analysis tools has surged dramatically. Today, we are excited to announce that we've open sourced EventHub, an event analysis platform that enables startups to run their funnel and cohort analysis on their own servers. Getting EventHub deployed only requires downloading and executing a jar file. To give you a taste of what EventHub can do, we set up a demo server to play on located here - demo server with example funnel and cohort analysis queries.
EventHub was designed to handle hundreds of events per seconds while running on a single commodity machine. With EventHub, you don’t need to worry about pricy bills. We did this to make it as frictionless as possible for anyone to start doing essential data analysis. While more details can be found from our repository, the following are some key observations, assumptions, and rationales behind the design.

Architecture Overview

Basic funnel queries only requires two indices, a sorted map from (event_type and event_time) pair to events, and a sorted map from (user and event_time) pair to events

Basic cohort queries only requires one index, a sorted map from (event_type and event_time) pair to events.

A/B testing and power analysis are simply statistics calculation based on funnel conversion and pre-determined thresholds

Therefore, as long as the two indices in the first bullet point fit in memory, all basic analysis (queries by event_types and date range) can be done efficiently. Now, consider a hypothetical scenario in which there are one billion events and one million users. A sorted map implementation like AVL tree, RB tree, SkipList, etc. can be dismissed as the overhead of pointers would be prohibitively large. On the other hand, B+tree may seem to be a reasonable choice. However, since events are ordered and stored chronologically, sorted parallel arrays would be a much more space efficient and simpler implementation. That is, the first index from (event_type and event_time) pair to events can be implemented as having one array storing even\t_time for each event_type and another parallel array storing event_id, and similarly for the other index. Though separate indices are needed for looking up from event_type or user to their corresponding parallel arrays, as event_type and user are level of magnitude smaller than events, the space overhead is negligible.

With parallel array indices, the amount of memory needed is approximately (1B events * (8 bytes for timestamp + 8 bytes for event id)) * 2 = ~32G, which still seems prohibitively large. However, one of the biggest advantage of using parallel arraysis that within each array, the content is homogeneous and thus compression friendly. The compression requirement here is very similar to compressing posting list in search engines, and with algorithm like p4delta, the compressed indices can be reasonably expected to be <10G. In addition, EventHub made another important assumption that date is the finest granularity. As event id is assigned monotonically increasingly, the event id itself can then be thought of as some logical timestamp. As EventHub maintains another sorted map from date to the smallest event id on that date, all the queries filtered by date range can be translated to queries filtered by event id range. With that assumption, EventHub was able to get rid of the time array and further reduced the index size by half (<5G). Lastly, since indices are event_ids stored chronologically in an array, plus the array is stored as memory mapped file, the indices are very friendly to kernel page cache. Also, assuming most of the analysis only cares about recent events, as long as those tail of the indices can fit in the memory, most of the analysis can still be computed without touch disks.

At this point, as the size of the basic indices is small enough, EventHub would be able to answer basic funnel and cohort queries efficiently. However, since, there are no indices implemented for other properties on events, in case of queries filtered by event properties other than event_type, EventHub still needs to look up the event properties from disk and filter events accordingly. Due to the space and time complexity needed for this type of query is not easy to estimate analytically, but in practice, when we ran our internal analysis at Codecademy, the running time for most of the funnel or cohort queries with event properties filter is around few seconds. To optimize the query performance, the followings are some key features implemented and more details can be found from the repository.

Each event has a bloomfilter to quickly reject event property which doesn't exactly match the filter

LRU Cache for events

Assuming the bloomfilters are in memory, EventHub only needs to do disk lookup for events that actually match the filter criteria (true positive) as well as the false positive events from bloomfilters. As, the size of bloomfilters can be configured, the false positive rate can be adjusted accordingly. Additionally, since most of the queries only involves recent events, to optimize the query performance, EventHub also keeps a LRU cache for events. Alternatively, EventHub could have implemented inverted index like search engines do to facilitate fast equality filters. The primarily reason for adopting bloomfilters with cache is that it doesn't require adding more posting list as new event properties are added, and we believe for most use cases and with proper compression, EventHub can easily cache hundreds of million of events in memory and achieve low query latency.

Lastly, EventHub as is doesn't compress the index and we left that as one of our todo. In addition, the following two features can be easily added to achieve higher throughput and lower latency if that's needed.

Event properties can be stored as column oriented which will allow high compression rate and great cache locality

Events from each user in funnel analysis, cohort analysis, and A/B testing are independent. As a result, horizontal scalability can be trivially achieved from sharding by users.

As always, it's open sourced, and pull requests are highly welcome.

If you like the post, you can follow me (@chengtao_chu) on Twitter or subscribe to my blog "ML in the Valley". Also, special thanks Bob Ren (@bobrenjc93) for reading a draft of this

Why building a data science team is deceptively hard

More and more startups are looking to hire data scientists who can work autonomously to derive valuable insights from data. In principle, this sounds great: engineers and designers build the product, while data scientists crunch the numbers to gain insights. In practice, finding these data scientists and enabling them to be productive are very challenging tasks.

Before diving further, it's useful to note a few trends in data and product development that have emerged over the past decade:
Companies such as Google, Amazon and Netflix have shown that proper storage and analysis of data can lead to tremendous competitive advantages.

It’s now feasible for startups to instrument and collect vast amounts of usage data. Mobile is ubiquitous, and apps are constantly emitting data. Big data infrastructure has matured, which means large-scale data storage and analysis are affordable.

The widely adopted lean startup philosophy has shifted product development to be much more data-driven. Startups now face the challenges of defining Key Performance Indicators (KPI), designing and implementing A/B tests, understanding growth and engagement funnel conversion, building machine learning models, etc.

Because of these trends, startups are eager to develop in-house data science capabilities. Unfortunately many of them have the wrong ideas about how to build such a team. Let me describe three popular misconceptions.

Misconception #1: It's okay to compromise the engineering bar for statistical skills.

For data scientists to work productively and independently, they must be able to navigate the entire technical stack and work effectively with existing systems to extract relevant data. The only exception is if a startup has already built out its data infrastructure. But in reality, very few startups have their infrastructure in place before building a data science team. In these cases, a data science team without strong engineering skills or engineering support will have a hard time doing their job. At best, they will produce suboptimal solution that will be rewritten by another team for production.

To illustrate this, take the example of building the KPI dashboard at Codecademy. Before visualizing the data in d3, I had to extract and join (a) user data from MongoDB, (b) cohort data from Redis, and (c) pageview data from Google Analytics. The data collection alone would've been near impossible without an engineering background, let alone making the dashboard real-time, modularized and reusable.

Misconception #2: It's okay to compromise the statistics bar for engineering skills.

Proper interpretation of data is not easy, and misinterpreted data can do more damage than data that's not interpreted at all (check out "Statistics done wrong"). Building useful machine learning (ML) models is trickier than most people expect. A popular but misguided view holds that ML problems can be solved either by applying some black box algorithm (a.k.a magic), or by hiring interns who are PhD students. In practice, hundreds of decisions and tradeoffs are made in solving such problems, and knowing which decisions to make requires a lot of experience. (I’ll expand upon this more in a future post titled “Machine learning done wrong”.) For a given ML problem, there are tens if not hundreds of way to solve it. Each solution makes different assumptions and it's not obvious how to navigate and identify which assumptions are reasonable and which model should be used. Some would argue: why not just try all different approaches, cross validate, and see which one works the best? In reality, you never have the bandwidth to do so. A strong data scientist might be able to produce a sensible model right off the bat, while a weak one might spend months optimizing the wrong model without knowing where the problem is.

Misconception #3: It's okay to hire data scientists who lack product thinking.

Imagine asking someone who doesn't have a holistic view of the product to optimize your business KPIs. They may prematurely optimize the sign up funnel before making sure the product has reasonable retention, which would lead to more unretained users. Some think data-driven product development is a local optimization. This criticism is only correct when those who drive product development with data fail to think about the product holistically.

To sum up, a productive data science team requires data scientists that are strong in engineering, statistics, and product thinking. It's hard. And it becomes even harder to look for the first data science hire who will be spearheading data efforts in a startup. For startups that don't have the luxury to wait and hire these rare data scientists, it's important to be aware of the compromises made especially in terms of the hiring bar. Before the data team is strong enough across all three areas, make sure they have strong support for the skills they lack, and don't expect them to work autonomously.

If you like the post, you can follow me (@chengtao_chu) on Twitter or subscribe to "ML in the Valley". Also, special thanks Ian Wong (@ihat), Leo Polovets, and Bob Ren (@bobrenjc93) for reading a draft of this.

Codecademy Reimagined

We’ve been working hard over the past four months trying to reimagine Codecademy and we couldn’t be happier to finally unveil it to the world. We have redefined every component under our brand, from a single button on our dashboard to our email template, business cards, slides and even apparel.

We had been discussing a design refresh for a while, but somehow it always ended up being pushed to the side. Finally, in October last year, after completing a user segmentation project that brought to live the main user archetypes of Codecademy.com, it quickly became apparent that if we wanted to grow and mature as a brand, we required a thorough redesign of our entire product.

Why a redesign?

Reason #1 – Start fresh

First, there was the obvious problem of design incoherence and variation. This happened primarily because we lacked a well-defined color and font palette, a uniform visual language for our badges, a unified layout scheme (page types), and a cohesive strategy for all print materials – business cards, postcards, posters, etc. After two and a half years of multiple nip and tuck design fixes and additions, it was time to clean up the house and start fresh. This meant we could finally create an extensible UI pattern library (used and shared by designers and developers) and optimize our new face across multiple platforms by embracing a responsive design layout.

Some of our old webpages
A random sampling of pages within our old web ecosystem, showcasing some visual design inconsistency.

Reason #2 – Brand matureness

Secondly, was the realization that our young startup look and feel was slowly becoming incompatible with our future goals and aspirations. In a time when we are engaged in several partnerships with schools, companies, and governments across the globe, while also continuing to fulfill the needs of our growing user base, our brand should feel a bit more mature, inviting, professional, and sophisticated.

Our old logo
Codecademy’s quirky and undistinguished old logo was created by one of our co-founders in a few minutes by browsing through various fonts in a word processor. The logo featured the giddy lobster font, which has become so popular that is at times compared with Microsoft’s Comic Sans.

Our new look

Phase 1

Back in early November last year, we partnered with our friend Eddie Opara, and his immensely talented team of designers at Pentagram, in order to create a new visual identity that could better reflect the company’s age, ambition, and main attributes.

The first thing we tackled was the logo, as the key centerpiece of our new look. We spent some time talking to our users, colleagues, and our founders Zach and Ryan, to have a solid grasp of Codecademy's perception and future aspirations. After this important research period, we went through several revisions, continuously narrowing down on the mark that best represented our main traits.

While putting the finishing touches to our new logo, we began creating a complementary color, font and iconography palette. It was important to handle all these components simultaneously, so we could delineate a consistent design thread through all of them. Phase 1 gave us the most critical building blocks of our new brand, through our partnership with Pentagram, and marked the beginning of an exclusive in-house development period.

Early directions of our logo
Various early directions for our new logo.

narrowing down on the logo
Narrowing down on a few favorite visual marks.

our final logo
Our final logo with its underlying grid.

Our new graphical language used across the site to indicate different types of content (symbols), actions and controls (icons), and learning achievements (badges).

FF DIN Rounded - Our primary typeface.

our new color palette
Our new color palette.

Phase 2

After defining the main brand pieces with Pentagram (logo, typography, iconography, color), we started applying it internally to our entire web ecosystem by building a comprehensive number of reusable design patterns. For two weeks we built a sizable UI toolkit covering a variety of elements (see below).

our first UI toolkit
Our first attempt at the UI toolkit encompassing only a short amount of elements.

Our growing UI toolkit covering every element, such as header, footer, form fields, button styles, sign up modules, grid, padding, typography, colors, and interactions.

Phase 3

This was the longest, and perhaps most exhausting, of all phases, where we redesigned 70+ webpages in tandem with other collateral material (email templates, slides, apparel, etc). Fortunately, we imposed ourselves a very well defined timeline, with multiple cycles and milestones, which helped us guide through this large task (see sitemap below).

First, we created a comprehensive sitemap of Codecademy.com and then divided the sitemap into four groups, each representing a 2-week delivery cycle. As we redesigned the various pages in each cycle, our brilliant team of developers built our UI styleguide and constructed many of the pages based on the shared design patterns.

examples 1
Examples of our redesigned pages, from left to right: Enterprise, Stories, Profile.

examples 2
Examples of our redesigned pages, from left to right: Blog, About, Jobs.

examples 3
Examples of our redesigned pages, from left to right: Help Center, UK Curriculum, Hour of Code.

Phase 4

Our final phase was all about making sure we were building the thing right. We implemented and tested our new redesign, while in the process getting feedback from our community. We created a huge amount of redlines for all the new material, started experimenting with some versions live on the site, and listened to dozens of comments from our selected users and moderators.

An example of the various comps created to support the accurate implementation of all our redesigned pages.

The beginning

Even though we spent a long time rethinking Codecademy, this hefty work is still unfinished. It certainly provides our team and product with a much-needed fresh face, one that we can feel proud of, and most importantly, one that our users can thoroughly enjoy. But this is just the beginning. We would love to hear what you have to say about our redesign and how we can continue improving our product. We have dozens of ideas to continue pushing this brand foreword. Please keep coming back for more!

We're Learning Too: A New Codecademy

Two years ago, we started building a product that would help teach people the skills they needed to succeed in a digital world. As more than 24 million people took Codecademy courses on our web and iOS platforms, we too learned and grew. Now, we’re excited to show you our latest project — a new Codecademy designed from the ground up, aimed to help you learn skills hands-on, with real projects, and constant feedback. Better yet, the new Codecademy experience helps to connect you with the real skills you’ll need to succeed in today’s workplace.

Learning isn’t just about one exercise or “class,” but instead is a gateway to community, opportunities, ideas, and a better life. We’ve witnessed this through the millions of learners on Codecademy and through the thousands of inspiring teachers who have shared their knowledge with the world with our course creator. We listened to them while building what we think is the best learning experience — for anyone, anywhere — to learn the most important skills of today.

In two years, Codecademy has scaled to become larger than we had ever imagined. Our learners, spread across the globe in every country in the world, have:

Today, we’re proud to show off the results of all of that to a few friends and, within days, the rest of the world. The first fruits of this effort are an experience that gets you from knowing nothing to building a website — in this case, Airbnb’s homepage. Along the way, you’ll experiment with blocks of code, see the results of adding and subtracting different parts of a page, and use the real terminology that developers and designers all over the world over use to create websites just like Airbnb’s.

Our new platform leaves you not just with new knowledge, but with a portfolio of projects you can share with your friends, enabling them to learn from you. We’ve even built the capability for you to share your work with future employers, and to demonstrate your new skills. We’ve been testing our new learning interface for weeks and we’ve seen it applied in an amazing number of ways — from designers at major firms winning new consulting work because of their ability to build their designs to students in high school making personal webpages for themselves.

Codecademy’s learning experience comes not just from the data behind 24 million learners and billions of lines of code, but also from the individual stories we’ve heard from our wealth of committed learners. Former book critic Juliet Waters, for instance, started learning with her 11-year old son as part of our Code Year program in 2012. Since then, she’s gone on to chronicle her journey in a book that’s coming soon, noting that programming helped her feel “more connected with others in our tech-driven society.” A parent named Shari told us that her 11 and 13-year old sons had a “reaction to what they are learning [that] beats their enthusiasm for the [video games].” We work hard everyday to deliver a similar experience for our users all around the world — with more than 65% of users outside the US, it’s important to us that we’re democratizing access to the fundamental blocks of knowledge that can improve peoples’ lives.


Tommy Nicholas’ story is just the sort we’re hoping our new learning environment will foster: he began with almost no programming knowledge at all, and gained enough skills to develop a website, Coffitivity, that was named one of TIME Magazine’s Top 50 websites in 2013.

Billions of lines of code, millions of users, and years after our founding, we’ve been astonished by what people can do when they can easily learn the fundamental skills that can transform their lives. Today, we’ve redesigned Codecademy to reflect that potential — and hopefully to help more people reach their goals and build the future they want to live in.

If you want to help us, we're hiring!

Codecademy's First iPhone App

Codecademy started to help anyone learn the skills they need in order to succeed in the twenty-first century. We want Codecademy to be with you everywhere - learning shouldn't be confined to a classroom or a desktop computer.

We launched our first iPhone app, Codecademy: Hour of Code, for anyone in the world to get started learning to code on the go. We've built an entirely new Codecademy experience for mobile that includes the same things that make Codecademy on the web great - interactivity, "snack" sized content, and fun lessons. Our first app gives you the basics of programming and should help absolutely anyone get started with programming - it's almost too easy not to try!

We'll send content updates to this app with more courses for you to complete as time goes on. You'll see more feature updates as well.

Perhaps best of all, this is just the beginning of Codecademy on the go. We want to help you learn the skills that can help you change your life - anywhere and anytime. Download our first app and let us know what you think!

Codecademy & English Computing Curriculum

Today, Codecademy is really pleased to announce our partnership with Computing at School (CAS), the leading authority on the new computing curriculum in England. England is the first country to mandate programing in schools. Starting in September 2014, students aged between 5-16 will learn HTML, CSS, Python and JavaScript. CAS were largely responsible for designing the curriculum objectives, and are leading the way in teacher training.

Teacher training is critically important and Codecademy is pleased to partner with CAS to be a part of the solution. Teachers can use Codecademy resources after they've attended training sessions to continue building their skills, and remote teachers can access the platform if they are unable to attend in person training sessions. Below is the official announcement:

From September 2014 schools in England will teach a new statutory computing curriculum, which aims to ensure all students can understand and apply the fundamental principles and concepts of computer science. This will make England the educational envy of almost every other country in the world, but it will also be a major step change from what schools currently teach. Not surprisingly this has left many teachers looking for support and further training.

CAS is running a national Network of Excellence for Teaching Computer Science, that aims to provide exactly this support and training. Codecademy, based in New York, will complement CAS’s in-person approach with a free online platform and interactive learning resources specifically designed to support the programming aspects of the new computing curriculum in England. Teachers can use it to learn programming themselves, or as a way to teach programming to their students.

Simon Peyton-Jones, Chair of CAS says “The UK has tens of thousands of teachers who need support and encouragement to deliver the new Computing curriculum with confidence and enthusiasm. Codecademy offers us the scalability of an online platform, and teachers can move smoothly from learning programming themselves to Codecademy to teach their students. I’m delighted to have this support.”

Codecademy Goes to Back to School

alt text

It's that time of the year again. The air is crisper, lattes are spiced with pumpkin-flavor extract, and Codecademy is coming to a campus near you!

Codecademy is taking to the road for a whirl-wind college tour up and down the eastern seaboard. We've had a great time sharing stores from our college fellowship program and spilling the technical details on how we evaluate up to 5,000 code submissions a second (over 25 million a day!)

alt text

So far, we've had a turnout at Brown that would scare any fire marshall and we've stayed up all night to hack with the best and brightest at MIT's blow-out HackMIT event. But we're just getting started, so come join us if we're visiting a campus near you!

Hope to see you soon!

MIT tech talk
10/8 at 7pm
Bldg 5, Room 233

Olin tech talk
10/9 at 7pm
Academic Center 126

Princeton talk
10/11 at 9pm

MIT On campus interviews
Apply on careerbridge, if interested

Codecademy at HackMIT

A few of us at Codecademy spent the weekend at MIT for HackMIT - a hackathon involving over 1000 college students from around the world. It's been an awesome experience seeing so many coders in one location hacking away at amazing projects.

The atmosphere inspired us to start hacking ourselves. For our hack, we decided to programmatically find the most active Codecademy users at HackMIT and give them some love and swag.

By querying our database for all of the emails of attendees at HackMIT, we were able to find all the Codecademy users in attendance. We then sorted the list of users by points and achievements to find the top 3 most active Codecademy users at HackMIT.

Here is a photo of us with our top HackMIT user - spiltpeasoup!

We were surprised to find out that over 25% of hackers at HackMIT have a Codecademy account! If you are at HackMIT this weekend, stop by and say hi!

Codecademy Site Downtime Friday 9/13

As some of you may have realized, Friday morning at about 10:00am, our site was not operable for 2 hours. We apologize for the inconvenience and wanted to explain to you why this happened.

Our hosting provider, Amazon Web Services (AWS), was having networking issues. This affected our app servers, app load balancer, and redis boxes. Some of you may have noticed a 503 error, which was thrown by our CDN (content delivery network). During these two hours, we are able to restore the site, but because of the networking issues, the site was very slow. At 12:07 Amazon Web Services restored the issue, and the site was back up and running as normal. Because this was a networking issue, no content or progress was lost.

Again we apologize for any inconvenience caused by this downtime. Unfortunately this particular issue was out of our control. We're investigating ways we can add greater redundancy to Codecademy to help ensure we're protected from similar issues in the future.

See what we posted on twitter Friday morning.

Glossary Redesign

We're always asking ourselves how we can help users when they get stuck while working through our courses. I had an idea at a company hackathon that turned into a big project.

For the past few weeks we've been running my idea as an experiment: when certain users write code that returns a common syntax error, we show them a snippet of code from the glossary that's an example of what they were trying to do.

The idea was that people need to see examples of good code before they can learn how to write good code.

In order to do this we had to redo the internals of the glossary to be more dynamic. With that done, another great result has been that we were able to hand over editing privileges to our moderators, who have been thrilled to take ownership of this part of the site and improve the content. They've been doing a good job of cleaning it up and adding to it, and this will be an on-going thing.

The best part of this is that as the moderators improve our glossary, the code suggestion feature will get smarter and show more examples! They come right from the glossary.

The overhaul was also aesthetic; the glossary is now much prettier and easier to read. The typography improved thanks to some expertise from our designer Jason and the code samples now match the color of our code editor.

Go take a look!


Learn Page Redesign

We’ve recently launched our new Learn Page. In case you haven’t noticed, please see it in detail here.

alt text

This redesign was long overdue and we’ve collected many tips and ideas from our community over the past few months. The goals of the new layout were the following:

  • Provide a clearer order and grouping of content, divided between individual languages and goal-driven paths (Web Projects and APIs for now).
  • Suggest a clear starting point for newcomers (Web Fundamentals) placed at the very top of the page.
  • Deliver an indication of progress on all initiated tracks. Notice how the “Explore” button changes into a “Continue” button with corresponding completion percentage on all ongoing courses.
  • Offer a redesign more in line with our brand and existing color scheme.

We hope you like it, and as always please let us know if you have any thoughts or suggestions.

The Long Wait

How did you get started with programming?
I started programming in the beginning of January 2013. I'm originally from Brazil and got married in November to my American girlfriend. During the paperwork process I couldn't work or study so it was the perfect time to learn to code.

Learning JavaScript and Python on Codecademy gave me the confidence to start learning Android programming. I started working on my application in April.

As my first project I decided to do a formula calculator. It's a calculator that allows the user to solve math formulas quickly and even has a few different color-themes. I released the free app in Google Play store in the beginning of June.

How did you make the jump from Codecademy to building real life applications?
The jump was hard. Especially when I started using a code editor and had to compile code. When I started reading documentation and seeing guides online I realized that besides some small differences the code structure was always the same. All the programming languages have logical iterations, loops and variables.

Sometimes if I felt overwhelmed reading API documentation I would go back to lessons on Codecademy and refresh my memory. The courage to move ahead came from these lessons. In the exercises you basically build a program, a small cash register, a game and so forth. I realized if I was able to understand the logic and create it within the exercise, building a bigger software would just take a little more time.

What are your future plans for coding?

I will keep improving my app during college or every time I learn something new and exciting that I can add to it!

I already added two more sections on my app since the release. I also want to listen to the suggestions my users have.

How do you see Codecademy fitting together with other learning methods?

I will be starting a degree in Computer Science at Oklahoma State University next fall. I see Codecademy fitting very well on my CS degree, as it allows me to get a quick access to learning a specific language or an API. I am also founding a Google Developer Group in my city to bring together experienced coders and beginners. One of my coworkers already joined my group. I recommended Codecademy to him and he is loving it!

What is your advice for someone just getting started on coding?
Don't ever give up and don't get intimidated by how big or complex some programs are. Everyone started with writing "Hello World". Start with a small project. Once you're done, try to think how to improve it. Some of the most important lessons I've learned happened when I was reusing code, or adding features to an already finished project.

Teaching the Universal Language

How did you first discover Codecademy?

I came upon Codecademy around December of last year, when the Code Year was being advertised. I'd been doing some low-level Google Apps scripting and a bit of HTML maintenance on our school webpage, and was looking for something to give me more coding practice. Once I made an account and started playing around, I never looked back.

What was the first big thing you built with your new coding skills?

The larger project was the automatic emailer to remind faculty when they had a certain duty to perform. At the beginning of the year, we make a spreadsheet with names, email addresses, and duty dates, and the script runs once each day at 2pm to send an email reminder to faculty who have the duty the following morning. We can swap around names in the spreadsheet very easily without breaking the script, so it's perfect (and free!).

How did the other teachers react to this?

Teachers enjoyed receiving email receipts and reminders, but I don't think they knew that a simple script did the work for me. In fact, some may still think that I manually send the email out each day. I expect that more faculty, though, will become aware of the power of scripting and the usefulness of code this year.

Do you see any parallels between teaching Latin and code to pupils?

Lots of parallels! Communicating via language involves breaking the bigger idea you're trying to send into smaller chunks following rules that govern how the individual components are put together. And while it may technically be correct to say something one way, the artistic qualities of style and "readability" are very important. We like language to be simple and "pretty", just like our code.

Latin is an inflected language that puts certain kinds of "endings" onto words to give them a specific function, e.g. adding an "accusative" marker to a noun to make it the direct object of a sentence. That's not unlike using data structures and functions with code to manipulate information in a usable way and interact with a user or group of users.

When coding, we construct functions to manipulate information, but when reading Latin (or using any language, for that matter), we're deconstructing the Latin "code" to build meaning much like a compiler. And it's no coincidence that Latin students tend to be interested in programming!

What are your hints for someone who'd like to start either learning or teaching code in educational setting?

I've found it helpful to carve out some time to devote to working on coding. Even if it's only a few minutes every few days, it's been helpful for me to find regular time to practice (just like with any language). I usually work on coding skills in the morning over coffee, once I arrive to campus in the morning as a way to get started with the day. It's proven to be my favorite part of the day, too!

In my experience, the coding community is very accepting and helpful, so to learn coding, I say just get out there, start writing code and ask questions when you have them. Within an educational setting, it can be fun to identify problems to solve with code that can be worked on in groups. Once you have some basic skills in your command, work on building something with students. Codecademy has a lot of great projects to help get you started.

Five Things We're Reading This Week

Education never exists in a vacuum. Here's what we've been reading this week.

Andrew McAffee: What will future jobs look like?


"In this TED talk an economist outlines trends in the global job market,
particularly the growing divide between middle class workers who have
and do not have the skills to fully engage in a technology-dominated

Brett, product manager

Don't Blame the Work Force

"This controversial editorial from the New York Times suggests that the skills gap isn't so real, it's that companies simply don't want to pay skilled workers what they are worth."

Douglas, code literacy evangelist

How Caffeine Can Cramp Creativity


Fascinating read on coffee's relationship to creativity. "I thought I was hardcore, but Balzac takes the cake: 'He pulverized coffee beans into a fine dust and ingested the dry powder on an empty stomach. He described the approach as 'horrible, rather brutal,' to be tried only by men of 'excessive vigor.'”

Zach, co-founder

In Head-Hunting, Big Data May Not Be Such a Big Deal

* Brainteasers are useless
* GPAs are worthless
* Consistency == good leadership"

Amjad, lead engineer

Apple: Making a difference, one app at a time

"This new marketing video focuses on people creating apps to solve meaningful problems like remote healthcare and helping children who can't communicate in traditional ways. It underlines the "I'm not a programmer - I just wanted to solve this problem" message that gets to the core of learning to code."

— Brett, product manager

What Language Do You Need to Know?

This is a post by Eric Weinstein, creator of many Codecademy courses and a current student at Hacker School.

There's a lot to learn when it comes to coding. How do you know where to start? Should you learn HTML or JavaScript? What's the difference between Python and Ruby? What are "client-side" and "server-side" languages, "front end" and "back end" and how are they different? Hopefully this quick post will help you choose the language best suited for what you want to do.

To edit webpages

If you're interested in creating a static website or a single webpage, you should start with Web Fundamentals of HTML and CSS. HTML stands for Hyper Text Markup Language and describes the structure of webpages. CSS stands for Cascading Style Sheets, and controls their appearance — for example, the font color or the position of text on the page.

To make them interactive

If you want to give your website behavior—think automatic Twitter updates, your Facebook notifications, or the ability to drag and drop elements of your LinkedIn profile—then you'll want to learn JavaScript and jQuery. JavaScript is a frontend, or "client-side" language which means it runs on the web browser of the person visiting your site. jQuery is a library of specific JavaScript tools designed to make website interaction more awesome.

To store user information

If you want to develop a full-blown web app that lets users log in and saves information for them (such as tweets, Facebook posts, or Codecademy badges), you'll want to learn a backend, or "server-side" language like PHP, Python, Ruby or JavaScript (it's ambidextrous). These languages run on the computer where the website code lives, also called the server. You can accomplish the same things and build the same kinds of projects with each of them, so go ahead and pick your favorite!

Which language will you start with?

Floor Drees: How to Learn by Teaching

This is a guest post from Floor Drees, who is organizing a beginner's course in Python in Vienna, Austria on July 20th.


Who are you and what are you about?

My name is Floor (yes, really) Drees, and I'm originally from The Netherlands. Currently I work as a tech reporter and developer evangelist in Austria, and make time to organize and coach at Rails Girls events, and co-organize the vienna.rb meetups and PyLadies events on the side.

After learning Rails, why did you decide to pick up Python?

For me, learning doesn't stop when you kind of understand one language. If anything, I learned a lot from looking at Rails and Java code at the same time! The similarities and differences help you get the hang of it.

You're just starting out with this language yourself — why teach it to others?

I'm somewhat confident with HTML, CSS and Rails and I like to share my experience when it comes to learning and teaching programming. I genuinely believe that teaching skyrockets your own learning curve and would encourage everyone to start coaching beginners, even if you feel you are still a beginner.

How did you start organizing coding events?

I tend to challenge myself and my ability to learn quite a bit — when I first thought about tackling Python I soon found myself starting my own PyLadies chapter in Vienna. PyLadies is this great worldwide network that empowers female coders in the Python community.


I boldly decided to list a beginners workshop on Meetup.com and then of course needed to come up with a program. After going through the Python track on Codecademy I decided I wasn't going to come up with something more fun to do — with such a great resource around, why not use it?

What can beginners do to get better at coding?

One fun way to better your programming skills is CheckiO, a web-based game where you need to code Python to get to the next level. This startup from the Ukraine lets you to challenge yourself and your friends to write more elegant code in a fun way.

Learning on your own tends to get lonely, so I'd advise anyone to look for user groups in their city. The Python community is very friendly and it shouldn't be a problem to find a mentor who is willing to answer your questions when you need.

Any parting words?

If you happen to be in Vienna next month, stop by our Pyladies event! Contrary to the name, anyone can apply to attend. We invite experienced Python developers to help you out, along with great sponsors and coaches for lightning talks. There will be cookies. And Codecademy stickers. :wink:

The NSA, Code Literacy, and You

Whatever we might think of Edward Snowden’s release of classified documents detailing the NSA’s snooping on America’s - well, everyone’s - communications, at least we all now know what’s going on.

Sure, most of us on the coding side of the screen already knew the deal. I haven’t found a programmer who was surprised by the news that our emails, text messages, and phone calls are being logged and stored. If anything, most of them are surprised that the general public seems so shocked. What were people thinking? That Google just gives us services like Gmail for free? We pay for this stuff - not with cash, but with our data.

None of our data may be so interesting in itself, but when it’s combined with everyone else’s it reveals a whole lot of information about us. Using factor analysis and other statistical techniques, big data can identify members of a population who might be about to purchase a new car, trying to have a baby, or even about to change political affiliations. No logic is required; the people and machines analyzing big data sets don’t care about why one set of data points might indicate some other data point; they only care that it does.

As long as corporations from Facebook to Twitter are collecting and using this data, why shouldn’t government get in on the act? Instead of looking for potential car buyers or new mothers, however, government is looking for potential terrorists. Or at least that’s what they say. In reality, the sample size of known terrorists is so small that it’s essentially impossible to draw statistical conclusions about their data. The only way to know what they’re saying is to listen to what they’re saying. Luckily (or terrifyingly, depending on your perspective) voice calls can be scanned for keywords as easily as a text document. The conversation can then be parsed by humans to determine whether there’s a threat.

The big news here, if any, is that now this stuff is public knowledge. Most of my friends and colleagues knew about government surveillance of digital communications, already. Some former students had even told me about installing switches at cell phone companies to be used for government snooping. Others helped write the database architecture for facilities that store voicemail long after it has been “deleted” by its recipients. Most of them were relieved that the information they were afraid to leak themselves is finally out.

But they aren’t the only ones who had foreknowledge of this recent leak. Pretty much anybody who knows how code works was prepared for this sort of revelation. Because becoming code fluent is about more than simply knowing enough javascript to get a job. It’s a way to become familiar with the operating system on which the human drama is playing itself out.

Moreover, the better you understand the programs and platforms you use - and the permanence of almost everything you do online - the better equipped you will be to choose what the data watchers know about you, and what they don’t.

May the digitally illiterate proceed at their own risk. Once again, you have been warned.

Three Ways Coding Kickstarts Your Career

Whether it's moving up in your job or getting a new one entirely, there's always a way to put code to work for you. Here are three ways users have applied their new skillset to take them where they want to go.

1. Find a new job

Liz was laid off from her administrative position this past November, and at 55 — without a college degree — she needed a way to make her resume stand a chance. Key web coding skills such as JavaScript, jQuery, Ruby, HTML/CSS, and Python helped shoot her to the head of the queue. What else? "My daily hard work on Codecademy gave me a feeling of competence, which helped me to be confident and knowledgeable in my interviews."

Find out how she did it

2. Land a promotion

Tim's office at the University of York uses Google Forms to automate housing transfer requests from thousands of students. After a few lessons he used JavaScript to write a Google Apps Script that sends a confirmation email as well, and that project slowly grew into building an entire dashboard to manage the transfer process from start to finish. The result? A nice promotion to the Data Analysis team, and a big boost of confidence.

Read his story

3. Become a developer

While working in the music industry, Jennifer started dabbling in web development and noticed that the hours seemed to pass quicker than before. She decided to move from a full-time position in music to working as an intern and studying in the evenings — but, she says, "this really accelerated my learning. During the day, I continued to improve my HTML and CSS skills while I worked on the Codecademy JavaScript and jQuery coursework in the evenings." Slowly but surely she became a full-time staff developer and now works at a SaaS startup.

Get her tips

Angie Chang: How I Learned to Code

What did you study in college?

After barely passing the Computer Science major requirements at UC Berkeley, I decided to focus on easier topics to graduate with: English and Social Welfare.

How did you get into tech?

When I graduated I had years of building websites under my belt, so my first job was at a venture-backed startup. I quickly learned how lonely it can be as a woman on an all-male engineering teams, so I went on to start Women 2.0 to meet like-minded entrepreneurial women in tech, and then two years later started Bay Area Girl Geek Dinners to meet even MORE of them! Women in tech DO exist in droves!


What are you currently working on?

Currently I'm working to change the ratio of women in engineering as Director of Growth at Hackbright Academy. An accelerated software development program solely for women, we attract students from all over the world and pair them with software engineer mentors to help them find work in tech. Now our students are working at partner companies and commanding some pretty impressive salaries after graduating from the 10-week program.

When did you get into programming?

In high school we got AOL at home and I was fascinated by the Internet. I looked at the HTML behind the simple webpages in 1999, and learned to write my own code and put up webpages. As a shy and quiet student, I supported my friends in leadership positions by creating their websites, and they started referring me to paid positions. And so it goes.

How did you learn to program?

Learning to program is simply being curious about how things work. How does this webpage render? What makes that do that? You peek behind the curtain, like they did in Wizard of Oz, and find that it's lines of code that eventually make sense after you do a lot of Googling and asking questions.

Google is a great resource for learning to program, as well as simply hanging out with other people who like to code. When sitting next to another person on their laptop coding (I think we call this "co-working" now), you can ask questions aloud and have them answered right away.

Your 140 character tip for aspiring founders?

Just start asking questions out loud - over Twitter, Facebook, LinkedIn - and you will learn from the answers you receive. Start iterating on your idea, and it will snowball.

Every Child Can Learn To Code

We are proud to partner with Google and Mozilla in supporting Code Club UK as it expands across the globe. We’ve seen the impact coding has on children first hand at Codecademy, and we are excited to watch Code Club open in more countries.


Code Club UK is a volunteer network of after-school coding clubs that exposes children aged 9 to 11 to programming. Their open source Code Club World initiative now extends the same opportunity to children everywhere, with materials in Norwegian, Ukranian, German, Brazilian Portuguese and Dutch — as well as hosting them on GitHub for programmers worldwide to translate and use in their own coding clubs.

Their mission — "to give every child in the world a chance to learn to code — complements our own and we can't wait to see everyone, young and old, have the opportunity to learn to program. Onwards!

Your Guide to Semicolons in JavaScript

This is a guest post by moderator Alex J. If you see him in the forums, say hello!

When do you need a semicolon? Here's a handy cheat sheet...

Required: When two statements are on the same line

The semicolon is only obligatory when you have two or more statements on the same line:

var i = 0; i++        // <-- semicolon obligatory
                      //     (but optional before newline)
var i = 0             // <-- semicolon optional
    i++               // <-- semicolon optional

Optional: After statements

The semicolon in JavaScript is used to separate statements, but it can be omitted if the statement is followed by a line break (or there’s only one statement in a {block}). A statement is a piece of code that tells the computer to do something. Here are the most common types of statements:

var i;                        // variable declaration
i = 5;                        // value assignment
i = i + 1;                    // value assignment
i++;                          // same as above
var x = 9;                    // declaration & assignment
var fun = function() {...};   // var decl., assignmt, and func. defin.
alert("hi");                  // function call

All of these statements can end with a ; but none of them must. Some consider it a good habit to terminate each statement with a ; – that makes your code a little easier to parse, and to compress: if you remove line breaks you needn't worry about several statements ending up unseparated on the same line.


1. After a closing curly bracket

You shouldn’t put a semicolon after a closing curly bracket }. The only exceptions are assignment statements, such as var obj = {};, see above.

// NO semicolons after }:
if  (...) {...} else {...}
for (...) {...}
while (...) {...}

// BUT:
do {...} while (...);

// function statement: 
function (arg) { /*do this*/ } // NO semicolon after }

2. After the round bracket of an if, for, while or switch statement

It won't harm to put a semicolon after the { } of an if statement (it will be ignored, and you might see a warning that it's unnecessary). But a semicolon where it doesn't belong (such as after the round (brackets) of an if, for, while, or switch statement) is a very bad idea:

if (0 === 1); { alert("hi") }

// equivalent to:

if (0 === 1) /*do nothing*/ ;
alert ("hi");

This code will alert "hi", but not because 0 equals 1, but because of the semicolon. It makes JavaScript think that you have an empty statement there, and everything to the right of it is treated as no longer belonging to the if conditional and thus independent of it.

Of course there's an exception...

An important quirk: inside the () of a for loop, semicolons only go after the first and second statement, never after the third:

for (var i=0; i < 10; i++)  {/*actions*/}       // correct
for (var i=0; i < 10; i++;) {/*actions*/}       // SyntaxError

How to fix your semicolons

The JavaScript syntax proofing tool JSLint, which is built into the Codecademy code editor, does a pretty good job of finding unnecessary semicolons – or missing ones.

It'll show you yellow warning triangles in code lines. Hovering the mouse over a triangle will tell you if there's a missing semicolon or an unnecessary one. You can generally trust those warnings until you develop an intuition of where to use semicolons and where not to.

Getting Started with Git

This is the first of a three post series by one of our moderators, Joah Gerstenberg.

What's git?

Git is a Version Control System (VCS), a tool used by coders around the world to keep track of their code and the changes they have made to it. A VCS will save a snapshot each time you check your code into the VCS, allowing you to go back to any revision along the way and restore your code to the way it was then.

Every programmer should use a VCS.

Here's why:

Ever made change to your code, but just after you saved the file, you realized that you made a horrible mistake and you need to go back? A VCS lets you quickly jump back to before you made the mistake.

Ever wanted to be able to prove (or disprove) that one particular line of code is breaking your project? A VCS lets you see multiple revisions of your code to enable you to do just that.

Ever wanted to try out a new innovative feature in your project without accidentally messing up the project altogether? A VCS lets you create parallel deviations to your code which can later be merged into the final project.

Step 1: Download git

Although not alone with alternatives such as SVN or Mercurial, Git is by far the most popular VCS available.

Get started with git by downloading the appropriate package from Git's Download Page for your OS. Git installs by default as a command-line tool, so follow the appropriate instructions to access the git command line for your OS (in Mac and Linux, simply go to the Terminal).

From there, all you need to do is cd into the directory your code is stored in, and git init. That will initiate a versioned git repository in the current directory you are in.

Step 2: Add a new revision

When you are ready to add a new revision to the git repository's records, simply (while cd'd into the git repository) git add what you want to add to this specific revision. For example, if your folder was like this:

- Code # <== this is a git repo
|- index.html
|- js
 |- script.js
|- css
 |- style.css
|- img
|- .git # <== this is a hidden directory, but exists if {Code} is a git repo

And you just wanted to add the changes in /js to your current revision, simply use git add js, or if you wanted to just add the style.css file, you would use git add css/style.css.

Step 3: Commit your revision

Git uses the term "commit" for the different versions recorded to connote that you are "committing" the current code to the pretty-much-permanent record held by the git repo. Once you have git add'd the files you want to be a part of your next commit, simply use git commit -m "Your Commit Message Here".

Git highly recommends that you include a commit message as a part of your commit, so that you, and anyone else looking at your code, can easily recognize what the current version of the code does. One less-known trick that you can use while using the git command line is that you can use git commit -m "" --allow-empty-message, and bypass having to supply a message with your commit.

Step 4: To the Internet!

By following the above instructions, all your code and commits associated with it will be stored locally on your computer. This is perfectly acceptable, but in my next post I'll discuss the more popular approach; storing your code online with a service such as GitHub.

Getting Things Done > Grade Point Average

This post by Alexis Ohanian, co-founder of reddit, was originally published on LinkedIn.


We're a generation in debt.

I had a world-class education at the University of Virginia. I met my reddit co-founder Steve Huffman there on move-in day. That chance encounter changed both of our lives. I had some awesome professors. There was the fortuitous trip to Waffle House that convinced me I wanted to be an entrepreneur, not a lawyer. I've written the book about internet entrepreneurship I wish I had back then. But my kids won't have the same education I did. And that's a good thing.

A year ago I sat on a panel at the White House for a room full of deans from universities across the country. We were tasked to talk about entrepreneurship and how to better prepare our nation's undergraduates for an uncertain job market.

"A critical skill I see in great entrepreneurs and employees alike is resourcefulness. Resourcefulness doesn't come from case-studies, it comes from doing things."

This turned out to be quite the applause line.

Paul Graham says the best founders are "relentlessly resourceful."

I've been thinking about that day in D.C. ever since.

Getting Things Done > Grade Point Average

I'm an employer and I don't really care where you went to school or what your GPA was -- I want to know what you've done. Paid off student loan debt by tutoring computer science in New York? Rock on. Raised $20,000 on kickstarter for a daft punk tribute album? Awesome! Started the 'dear photograph' meme? Splendid! Blogged years worth of eating across the world and now creating food-tour-guides? Now we're cooking with bacon.

Read the full article

How Kids Can Learn to Code

Designer Jeffrey Karl illustrated a Codecademy Kids for the iPad app to help more kids learn how to code. While not developed (yet!), his ideas show how to get any child interested in coding.

Why do you think kids should learn to code?

It's not that you need to master code, but everyone should know the basics. I had heard about how the country of Estonia mandated that elementary school students learn how to program, and also how there are not enough code literate people. There's a big barrier to entry to learning how to code - so how do you lower it?

How do you get them started?

One way to make kids excited about coding - or learning anything for that matter - is providing context for whatever subject it is you want to teach them ("If you learn this, you'll be able to..."). Let them know that if they code they'll be able to make their own games, or code their own website, or maybe just having fun with a more game-like or story-driven experience will be enough.

Coding is intimidating even to adults - how does this app help?

I wanted it to feel very tactile, like a child's arts and crafts project — each interactive element in the app is something to move around.


I used drag and drop (roughly borrowed from Scratch) to simplify the experience. I had the idea of having pre-made tools; for kids, they don't need to know the intricacies of writing code. So say you want to write an If / Else function in JavaScript. Drag and drop a function from the toolbox onto the looseleaf paper, then go back and grab the If / Else bit and drop it inside of the function. You'll see them expand so you can look at syntax. In the beginning, it's more the structuring of code that matters.

Without badges, what's the motivation for kids to do lessons?

Instead of getting badges for the sake of badges, in this app you're getting robot parts so that you can build a robot of your choice.


A robot represents a course. We need help building this robot and you do that by completing the lessons. There are different sized lessons so that you can add a leg and an arm, and it's fine to add three arms to make a really big robot (or a really long lesson) too! Each of the sections highlights a different part of the body.

As a game designer, how do you keep kids engaged?

I recently saw a talk given by Sebastian Deterding. He stressed that gamification is more than badges, leaderboards and points; it's about providing a meaningful experience for the user. One way to do that is through creating a fun story. This was basically the solution I used with Codecademy Kids for the iPad: the current system of badges aren't really related in any meaningful way - save the overlapping skill set it takes to complete each. Providing a storyline where kids can help this friendly character, Ratchet the monkey, build the individual parts of a robot is one way to contextualize these lessons for children.

How To Build an App

Did you know you can create an app using JavaScript? Read these three stories of users who went on to do just that.

1. Jonathan and SimpleTax

Jonathan never wanted to become a programmer, he wanted to learn to solve problems. With Code Year, he got the skills to do that. Now he’s building an app to simplify doing your taxes.

2. Ryan and Sworkit

Last year Ryan was looking for ways to learn to code. After trying books, videos and articles, he stumbled upon Codecademy. Armed with the skills he learned there, Ryan wanted to build something of his own.

3. Michael and GVING

When Michael Perry founded GVING, he knew he would have to learn to code eventually. With Codecademy (and the help of some friends) he finally met his goal.

Code in the Classroom

This is an excerpt of an article by Jon L. Denby of NYU explaining a Coding 101 course using our curriculum. If you're interested in using Codecademy in the classroom, get started here.

"If you don't speak 'computer' in our current economy, it's a little like not being able to read the street signs; it's a major handicap," says Leibovitz.

Thankfully, there is no shortage of students eager to learn.

Leibovitz's first class, co-taught with programmer David Hu in fall 2012, had only 50 seats available. They were all reserved in less than three minutes of class registration opening, and the wait list grew to 120 students.

While teaching courses at NYU Steinhardt like Video Game Theory, Video Game Industry, and Digital Literacy, Professor Leibovitz realized that many of his students lacked an understanding of how digital systems actually worked. He was looking for a simple way to teach his students computer programming when he stumbled upon the Codecademy website:

I realized it was a really, really good solution for several reasons. First of all, it was something that was modular. You could do it on your own time. You could do several units, or all the units or tracks. It really gave you options.

It was also based on real-world, complete projectsI mean every single track that you have there is based on building a game, building a tip-calculator, building a Blackjack game, building a choose-your-own-adventure game—all kinds of real-world projects. It was written in this language that I thought would resonate tremendously well with our students because it was down to earth, it was English, it was easy to understand.

Continue reading here.

Getting Comfortable in the Terminal: Linux

This is a guest post by Daniel Seymour, one of the Codecademy moderators, with editing help from Alex Craig and Dustin Goodman.

"I see a blinking cursor. WHAT DO I DO?!"

When you hear the word "command line", "terminal," or "little window that tells a computer what to do but only has a flashing cursor in it," what comes to mind? Do you scream and hide under your bed? Or do you look at me inquisitively and wonder why I would bring such a scary thing up?


I hate to tell you this, but you MUST conquer your fear of the terminal (if you have a fear) and learn how to use that annoying little window with a flashing line in it. A *nix (Unix (like Mac), Linux) system is an operating system that can enable you to do some rather amazing stuff quite quickly, if you know what you are doing in the terminal. Before I start throwing terms at you I need to define a few.

Basic Terms

Operating System, the program that tells the different pieces of hardware how to work together to make a comprehensive system.
Graphical User Interface, essentially the little window that has buttons you can click that often hides the power of the terminal.
Part of the computer that allows you to issue commands to the computer and directly interface with the OS.
Executable file, file used to execute a program on your computer.

Now that you have a rudimentary computer vocabulary, you can start conquering your fear. I use the terminal all the time and am able to do basic things faster, such as pushing to Github, connecting to a network, etc. I currently use a command-line-based Linux distribution. On the rare occasion that I have to use Windows, most of the basic jobs of the computer, such as connecting to a wifi network, take so long that I feel like I am waiting for a marathon to end.

Step 1: Find your Terminal

So how should you start conquering your fear? I would suggest finding the terminal on your system. For this first part, I am going to assume that you are using a Linux distribution such as Ubuntu, Linux Mint, Fedora, OpenSUSE, or Debian (to name a few). On any regular GUI-based Linux system, go to the applications menu and search for terminal. When you find it, open it and stare at that blinking cursor for a few seconds while saying, “I will learn to use this thing.” :smile: (You can skip the staring if you want.)

Step 2: Start an Application

The most basic operation that a user can do from the terminal is start an application. On almost every Linux system, simply using the name of the executable in the /usr/bin directory will start the application. For example, starting the Firefox web browser simply requires typing “firefox” into the command line and pressing enter. You should now see a session of Firefox launch on your desktop. Congratulations! You just executed your first command from the terminal!

Note: Launching an application from the terminal will lock that terminal instance so that you cannot do anything else with it. If you want to be able to use the terminal for other activities, trailing the application executable name with a “&” will put the process in the background of the terminal and you will be able to use the terminal for other things.

Step 3: Get Specific

Launching an application is not all that the terminal can do. You can launch applications and tell the application to edit such and such file (in the case of a text editor, such as Nano, Vim, or Emacs. Nano is the default terminal text editor for most Linux distributions) or you can tell a web browser to launch such and such a web page. For example, the command:

firefox www.codecademy.com

will launch a session of firefox and open the session on the Codecademy home page.

Step 4: Entering Commands

Now that you know how to launch an application, you will also need to know how to traverse the file system straight from the terminal as doing so is a big part of many operations that are done in the terminal.

To start off, enter the command pwd. You should now see something along the lines of


The above command stands for Print Working Directory so the directory that you see posted to the terminal is the directory that the terminal is currently in. Now enter the command “ls”. You should now see something along the lines of:

Desktop/    Documents/    Downloads/    Music/    Pictures/    Videos/

And all of the other folders that your home directory contains. The ls command can be thought of as standing for LiSt the contents of the present folder.

A Brief Note on Flags

Before we go any further, you will need to know about flags. Flags are options that are passed to a command that extend the command to accomplish another task at the same time.

Now type the command ls -a (-a meaning all). You should see everything that you saw using the ls command but also you should see a bunch of folders and files that begin with a .. These extra files/folders are “hidden” so as not to clutter up your home directory with files that you may only open once in the life of the computer (if that). As you may have guessed, the difference between a hidden and not hidden file is the beginning dot. The dot tells Linux to hide the folder/file.

Step 5: Change Directories

One last command that you must know to be able to start using the terminal effectively is the cd command. If you type cd by itself, you most likely will go back to your home directory or nothing will happen. This is because the cd command stands for Change Directory.

Because you didn’t pass cd an argument, the terminal has no clue what folder it should enter. The most important cd arguments that you will need to know are {childFolderName}, .., . and ~.

  • {childFolderName} argument tells the terminal to enter the folder in the current directory by the name of {childFolderName}
  • .. tells the terminal to go to the parent folder of the current directory
  • . when used in conjunction with /{folderName} tells the terminal to enter the child folder of the current directory by the name of {folderName}
  • ~ tells the terminal to go back to the home directory (/home/{username}).

Other Useful Commands

Here is a list of other commands that you will probably find useful:

  • mkdir “Makes” a directory in the file system at the specified file
  • rm Deletes (“removes”) the file at the specified file path.
  • rmdir Deletes the directory at the specified path.
  • man Opens the MANual pages for the specified command or application. For example, man ls will open the man page that contains all of the information and flag options for the “list” command. This is especially useful to see if a program offers any extra functionality or to figure out how to configure a program.

That's it! Now you're ready to get started in your terminal.

Bringing back keyboard shortcuts

Since introducing the new coding interface the much loved keyboard shortcuts have been amiss. Now we're bringing them back.

Here's a cheat-sheet you can follow

Reset Exercise
Completely messed up a solution? Start fresh.
* Windows: Alt-R
* Mac: Option-R

Next Exercise
Peek at the exercises ahead. Get excited by what the section has in store you!
* Windows: Alt-P
* Mac: Option-P

Previous Exercise
Want to retrace your steps to solve the current problem? Revisit an exercise to see all you've done!
* Windows: Alt-O
* Mac: Option-O

Save and Submit
Ready to see if it works?
* Windows: Control-Enter
* Mac: Command-Enter

That's it! To start using them, go try out an exercise like this one in JavaScript.

To infinity, and beyond!

Designer Olivia Cheng and her Codecademy team's project Mars Watchtower was selected as a winner for Virtual Participation in the International Space Apps Challenge. We interviewed her to find out how the magic happened.

What led you to apply for the hackathon?

I saw it on Twitter and thought to myself, "Wow, it would be so awesome be involved in that" and then, "Well, why not?" I couldn't attend any of the physical hackathons, but I saw there was a virtual location option. Couldn't hurt to try!

How did you find your team?

I reached out to the Codeacademy group The Open Source Project to see if anyone would be interested, and got positive responses. I thought it would be a good fit since any project submitted to the Space Apps Challenge would be open source, and our team ended up with 5 members total.


What was it like to working together virtually?

I always planned on contributing to one of the GitHub projects started by the group, but I hadn't expected to work with other members in real-time—there's a big difference.

Because of the time zone difference, we took shifts coding—one of us about to sleep would fill the other people in on the progress and what tasks remained. There were hiccups, of course—occasionally someone would accidentally overwrite another person's code, and sometimes a whole page of code would get wiped if Cloud9 IDE crashed while saving (oops!).

Any advice for people who want to do a hackathon?

Plan well. Do as much planning as possible ahead of time or in early hours because you have limited time to do what you need to get done. If you're in a team, have a project manager to coordinate everyone's efforts. Collaborating online can be a lot harder than in person, especially when you can't just walk over to your teammate to quickly discuss something, so set up a workflow ahead of time.

Mars Watchtower team

We ended up using Workflowy for managing tasks and Cloud9 IDE for sharing code. Cloud9 IDE allowed us to write, edit and run our code with other team members simultaneously without the hassle of setting up individual local environments.

So... what's next?

I'll keep the project up on GitHub here so that team members (or anyone else) can continue to contribute. Although we didn't win any global awards, our work paid off—we were selected as one of four winners for Virtual Participation.

As for the Codecademy group, I've been talking with the leaders of The Open Source Project and there are some ideas floating around to kickstart some projects in a hackathon-style… so we'll see where that goes :smile:

How Knitters are Human Computers

This is a guest post by M.K. Carroll, Crochet Editor at Cooperative Press and Knit Edge magazine. Have something you'd like to share on our blog? Drop us a line.

It's a popular hobby, practiced by people all over the world. At its most basic, it's a loop of string and two pointy sticks. The loops can be combined in various ways to create a wide variety of things, from the practical and useful to the whimsical and just plain weird. In other words, knitting is a lot like coding.

Say what?

*k2, p2, 2/2 LC; rep from *, end k2.

What you see above could be described as a line of knitting code: a set of instructions that you can use to execute a row of knitting. Combined with additional lines of code, these instructions (commonly referred to as a knitting pattern) can be used to create a recognizable item, such as a sweater or a pair of socks.

Knitting — like coding — gives you the freedom to create

You can buy a sweater ready-made with a lot less effort than it would take to knit one, but there are a lot of reasons why you might want to knit that sweater yourself, like having one that fits you perfectly. You could also spend a lot of time trying to find one to buy, or a lot of money getting someone else to design and knit it for you. Sometimes - like learning how to code - learning how to create is how you get exactly what you want.


One line at a time...

Knitters and other "yarncrafters" (like crocheters and weavers) understand what it means to build something one stitch (bit) at a time, and yarncrafting pattern designers (coders) know what it means to code, use an API, design, test, debug, and maintain the source code - even if they don't realize it yet. Daniella Nii says that:

"Just as in coding, attention to detail and syntax are crucial to a successful execution of a pattern (program). An overlooked parenthesis, comma or repeat can result in a piece of code that doesn't compile and will interrupt the flow of the program, possibly discovered when the next line of instructions will not work with what the knitter has on the needles."

Knitters know how to learn and "speak" a different language already, and learning how to code could mean being able to design and build the knitting app they want, without having to hope that someone else will. Not bad for something that starts with two sticks and some string!

Know how to knit? Learn how to code!

If you are a yarncrafter, you are already predisposed to learn how to code. Do you think it would be awesome to play a video game based on knitting? You can learn how to make one. Would you like to sell your crocheted mustaches on your own website? You can learn how to build a website and storefront too. Do you think PlaceKitten is an awesome API, but would be improved with yarn? You can learn how to use APIs to make the app that you want, instead of settling for an app designed for someone else.

Know how to code? Well...

If you are learning how to code and enjoying it, you may also enjoy learning how to knit, crochet, or spin. After all, if you want to build a website to look and function in just the right way for you, you may also be the kind of person who would want to knit a pair of Dalek patterned mittens that fit you perfectly.

Thanks to the yarncrafting coders LeTonBeau (on Ravelry.com), Daniela Nii (nikkisstudio on Ravelry.com), and Megan of stockinettezombies.com for volunteering to check my analogies and make sure they were accurate!

Looking for a Few Good Fellows

We're looking for a few good fellows to come join our team!

The Codecademy Fellowship gives curious college students the chance to spend one year as professional software engineers working at a startup driven to change how people learn.

This spring we've had the pleasure of having Bob & Louis with us. Learn what they have to say about the experience below!

Meet the Current Fellows

Louis, MIT '14
Louis Sobel

Bob, UIUC '14

Why were you interested in becoming a Codecademy Fellow?

Bob: It seemed like an incredible opportunity to work with a very talented team working on a great mission.
Louis: Gaining some practical industry experience that would apply some of the things I learned in school seemed like a great next step to shape my career.

What projects are you working on at Codecademy?

Louis: I am working on the interactive evaluation environment for languages like Python, Ruby and recently released PHP.
Bob: I've spent most of my time here building the new Learning Interface.

How has the fellowship met your expectations?

Louis: They have been more than met. My expectations were to work with smart and driven people on problems that challenged me and gave me the opportunity to learn.
Bob: Definitely. It's an incredible learning experience to ship code everyday at a fast paced startup like Codecademy.

What is the best part about living in New York?

Bob: The energy of the city really is undeniable. There's always something going on, new things to experience and learn.
Louis: It's been exciting to be part of the diverse and growing tech community in New York.

Any advice for future fellows?

Louis: Think about yourself and your education critically - what are you good at, where do you lack experience? The fellowship is an opportunity to learn things that you couldn’t learn in a classroom or internship.
Bob: Be very specific with your application. Show us your personality, emphasize what makes you unique.

Codecademy Meetups!

Editor's note: This post is about our NYC Meetup. You can find a Codecademy meetup near you on our Meetup page! To get help hosting a meetup, reach out here.

Learning to code on your own can be tough.

That’s why each month we host meetups for people to come and learn together. This month we were lucky enough to have journalist and Code Year veteran David Bauer come and present.

David wanted to do something better with code than creating arrays of zoo animals; so he decided to create Instacurate to visualizes tweets using Twitter's API. (To learn how to use Twitter's API yourself, try out this course.)

After a brief Q&A we broke into groups to explore the questions the group most wondered about:

**1. What language should I start with?
2. How do I get started coding on my own computer?
3. What should I make with what I’m learning?**

If you can learn, you can teach, and this gave everyone an opportunity to help out. Bravo!


Meetup 1

Meetup 2



Until next time, happy coding!

How to Outgrow the Fear of Starting

Why did you want to learn to code?

I’ve always been the type of person whose mind is continuously racing with startup ideas. My wife is forced to act as the sounding board for all of my hair brained schemes, and I’m always sure to remind her when a startup is successful with "AN IDEA I THOUGHT OF AGES AGO!” At some point, I decided (she decided) if I wanted to stop talking and start doing, I’d need to learn to code.

When looking around online at the available options, I really wanted something hands-on and not just endless video tutorials. Codecademy definitely fit the bill.

Where did the idea for Outgrow.me come from? And how did you get started?

As an avid backer of Kickstarter and Indiegogo projects, I would often wait months for projects to fulfill rewards, and I'd sometimes miss campaigns and have no way to follow up on when the product I wanted would be available. I saw a need for an online marketplace for crowdfunded projects and decided to make it my first project, Outgrow.me

When starting with Codecademy, I was amazed at how quickly I was able to pick up the information. After just a couple of weeks I was convinced I had amassed a huge wealth of knowledge (I didn't) and was fully capable of launching my first website (I wasn't). What I didn't know yet I figured I'd be able to learn on Codecademy while working on a project simultaneously (this turned out to be true!).

What kept you going when you hit problems?

Blind determination. I set my mind to it and decided nothing was going to stop me. In a very genuine way, at no point was failure on my list of options.

What are your own plans next with regards to code?

I'm really focused on learning Rails and APIs with the new tracks made on Codecademy. I'm working on a new, more complex project and I'm excited for what's to come!

What are the first steps you'd recommend for someone who's interested in learning to apply programming in their work?

First, just start. Start somewhere. Start anywhere. Just start! Second, stay positive. It's easy to get overwhelmed and give up when the going gets tough. The key is to stay positive. The worst thing for a project is negativity. A favorite quote of mine: "Think good and it will be good." - Rabbi M. M. Schneerson.

Get started today with JavaScript! Or if you have a story you'd like to share, let us know.

Introducing your new profile

Your profile page on Codecademy started as a list of the courses you had taken, but it quickly became overly complex as we expanded the variety of ways to interact with Codecademy and each other.

We've recently taken a step back and reworked your profile to better serve its most important purpose - to showcase who you are and what you've achieved on Codecademy.

Show who you are

We wanted to make your profile really easy to personalize. You can upload a photo, write about yourself, and share some basic information without leaving the page. To make it easier to share, you can access it at www.codecademy.com/[_your username_].


Show what you've accomplished

The old profile, like a report card, emphasized your progress - which courses you still had to do in a track. The new one highlights your accomplishments and contributions. At the moment, completing a track is the biggest accomplishment on Codecademy, so we show the tracks you've completed and are working on front and center.


And if you've created a course, everybody should know about it, so we spotlight the courses you've contributed.


Make it look good!

We've cleaned up and streamlined the new profile to make sure that people looking at it are able to get the important information they want. The visual style is also now consistent with the one first introduced in the new learning experience.

How can you get it?

You can opt in now, or wait until Monday at 4:30 PM EST, when we are going to switch it over to everyone. Let us know what you think about it and how we can make the profile best represent all your hard work and learning on Codecademy.

Meet the Moderators!

This is a guest post by our team of moderators. Special thanks to Michael Rochlin, Alex C, Alex J, Nick Edwards, Haley Higgins, Dustin Goodman, Daniel Seymour, boring12345, Giacomo Sorbi and Jacob Andersen. If you see them in the forums, be sure to say hello!

Hello fellow Codecademics!

As you may have noticed, there is a mysterious group of people who frequent the Q&A forums and have a little moderator badge next to their names. We would like to explain who these moderators are and what they do.

Back when Codecademy was still in its infancy — before PHP and even before jQuery — we realized that the Q&A forums needed to be managed. Someone needed to be responsible for making sure the community maintained a friendly and helpful atmosphere. Codecademy staff were busy building the amazing site you all know and love, so they reached out to the community for help. The most active, eager, and helpful Codecademics were tasked with making Codecademy even better than it already was, and this small group became “moderators.” The site has since grown, and so has the need for moderators. We are now 20 moderators strong and growing.

So what exactly does a moderator do?

As the name suggests, we moderate the forums. Knowledge-hungry learners post hundreds of new questions and answers every day. It is our job to create a friendly learning environment by removing spam posts and looking out for disruptive users, especially those who use profanity, insults or are just plain mean. We also try to make sure that people are not simply posting working code, because we believe in learning by doing; which is a process that usually involves trial and error. We also sometimes step in to correct people’s posts and show users how to format code snippets.

Moderators are here to provide extra help and answer people’s questions. (In fact, this is what we spend the most time doing.) Each moderator has proven that they can be helpful in answering people’s questions, and we all try our best to provide as much help as we can, to as many people as we can. When you see the “moderator” badge next to our names, you can rely upon that answer to be correct.

Additionally, we are in close contact with the Codecademy staff, especially the Community tag-team of Linda and Karen. We let them know what is going on from a user’s perspective, as well as point out issues that we have noticed across the site. We help to brainstorm on ideas for the future, discuss user reaction to recent changes, and try to provide insight into how Codecademics think.

Here are a few (unofficial) stats about us:

  • Number: 19 moderators plus Linda, Karen, Eric and Codecademy staff
  • Countries of residence: USA, UK, Belgium, China, Germany, Israel,
    Italy, Kenya
  • Languages spoken: Chinese, Dutch, American English, Texan English British English, Finnish, French, German, Hebrew, Italian, Russian, Spanish, Swedish
  • Ages: in range(15,99)
  • Programming Experience: Novice to expert

In sum:

We are users passionate about fostering Codecademy’s vivid community.
We find it rewarding to contribute and share our knowledge.
We enjoy helping fellow users learn how to code – and learning from them.

But most of all, we’re Codecademics just like you!

Building an app? Start here

1. How did you get started learning to code?

I made a ton of failed attempts over a year because I thought "I should" learn to code, but can't say that I truly wanted to. I was using YouTube videos and even made one attempt on Codecademy previously. GVING was at a point where I absolutely had to learn how to code. I ended up coming back and committing to Codecademy because even on my previous failed attempts I had made the most traction there.

2. What was the most challenging part, and how did you tackle that?

For the first couple of attempts the most challenging part was repetition. I would have days in-between taking classes so I wasn't able to "really" recall previous lessons.

Being patient, and aware it was going to be hard, was the first step in tackling it. I was also fortunate to have a couple great friends (and CSS/ HTML masters), Andrew Cornett and Dean Pogni, coach me and help me through tricky parts.

3. What resources do you recommend for creating an app (or learning to code)?

Codecademy, Google and (if you are as lucky as me) great, talented friends who are willing to be patient with you.

Also- be prepared to dip into your own greatest resource: time.

4.If someone wants to create an app, what are the first five steps they should take?

I think this depends if they are looking to build something for fun or something they hope can turn into a business.

In my opinion:
1. Get something on paper, make your ideas feel more concrete even if its just wire frames. It's fun, and is the best place to start.
2. Talking to people you trust and respect, getting feedback is a great thing- can also help shape and prioritize build
3. Find the right players to build with you- you cant do it alone.
4. Ship something simple- keep it simple.
5. Mentally prepare yourself its going to be hard- but amazing. So stay light hearted and have fun.

5. What advice do you have for someone who wants to create an app (or learn to code)?

Jump in and do it. It can be a bit intimidating to try and build something yourself, but nothing feels more satisfying.

Read more about GVING and app builders learning to code in the Wall Street Journal.. To get started yourself, head to Codecademy's JavaScript track.

Better, Faster, Stronger

After releasing our new coding interface, a number of users have had difficulty running code and loading exercises over the past week. I apologize for this. These issues are not related to the new interface, but instead are deeper issues with how we evaluate code submissions. I wanted to share the background of what is happening and what we are doing to build a stronger code evaluation platform going forward.


It is possible, but not at all easy to run languages like Ruby, Python, and PHP directly in the browser. In fact we used to do this by serving an interpreter for each language, compiled to JavaScript, to your browser!

We ultimately found this approach to be too fragile to use in production, and last summer we launched the Python language track on top of a server-side code evaluation service that we call Codex. Codex was originally designed to run Python code in a secure environment. As we added new language tracks like Ruby and PHP, we began to push it to its limit.

When we designed the new interface, we built it to be more responsive. Unfortunately this strained Codex in ways it wasn't intended to be used, resulting in spotty performance. Making Codex more robust will let the new interface deliver on its promise.

What we're doing about it

Codex has gone through some significant growing pains as we've rapidly expanded both our user base and the ways we use the service.

We pushed a series of fixes to take it off life-support and are doubling down our investment in it as the backbone of our coding experience. We are refactoring core aspects of the service to handle much larger loads and adding support for multi-process environments (i.e. running mongodb, node.js, and redis together in a single app).

This will ensure that Codex is prepared to grow with users as they tackle an ever increasing variety of topics and technologies. Thank you for your patience, and we're excited to see what you build!

If you are experiencing these issues, please see our support article here.

Study the human mind - with Python

How does a cognitive science researcher end up using Python?

In cognitive science we often create experiments that put participants through a specific sequence of events. Then we look at how they respond to these events and draw conclusions about the thought process.

For example in my current research project I am looking at how hue color memory changes over time. To do this I need to precisely control the amount of time between when an image is shown to the participant and when memory for it is tested. I also want to randomize when particular images are shown in the experiment. This is where programming comes in handy.

What do you mean? Couldn’t you just use an existing software to do this?

Yes. Experiment building software allows me to do simple control/randomizing tests, but for more complicated tests it isn’t very helpful.

Python allowed me to create complex, randomized lists of tasks to suit my own experiments and needs.

Why use Codecademy to learn Python?

In order to use Python I needed to learn the data structures and understand how the basics of the language work.

Taking a traditional computer science course focuses too much on how a language works under the hood for my purposes. I just need to know enough to program a solution to my current problem, not to find the most efficient solution. Codecademy helped me to internalize the data structures and logic of Python so I could sit down and create what my research project needed to be scientifically rigorous quickly.

What are the first steps you'd recommend for a researcher who's interested in learning to apply programming in their work?

As far as I can tell the best way to use programming in research is to just get started.

Don't wait for a formal class to get started next semester. Picking up theory and best practices as you go along is helpful but not necessary to get started: in research we often need our programs to work, not to work most efficiently.

One 'best practice' to keep in mind is commenting: you are going to want to be able to understand what your program is doing at some point down the road when you are expanding your work or writing it up and need to put details to paper. Don't skimp on commenting!

How have others in your workplace reacted to you coding up your own experiments?

The reaction to learning to code is overwhelmingly positive. The faculty in my program are all proponents of harnessing technology to study the human mind effectively; coding opens up many new avenues to accomplish that goal. My program has a grad course where the main mission was to expose us to many languages and techniques quickly so we know what tools are out there and would help make our research better.

In my case, it meant investing time in learning Python to have full control over my experiment flow. I not only have an experiment that does exactly what I want but I also have a very versatile tool in my toolbox which will allow me to be more productive in the future by investing the time now.

Additionally, with the current movement toward open science (open access, open source, etc.), I will have non-proprietary experiment scripts to share with other researchers. This is a movement that my peers and I all support.

I already have some basic skills in R an open source statistical programming language and can share my data analysis scripts. Now I will be able to make even more of my scientific process transparent.

What are your own plans next with regards to Python?

I plan to continue to program my experiments in PsychoPy. As for expansions, I will see where the science takes me.

Down the road I plan to make a computer model of the cognitive processes I am investigating experimentally. Programming will allow me to make simulations to predict how a proposed cognitive mechanism behaves formalizing my scientific theory and suggesting new experiments to conduct with human participants. I will use whatever programming language is most suited, but my work with Python has allowed me to wrap my mind around the programming process, taking me one step closer to the modeling goal.

My next Python project will be to extract a corpus of text from the internet to bring with me to an exploratory data mining course I am taking this summer. By automating the process I will be able to collect large quantities of data for mining.

I also don't plan to just stop at Python! I have heard great things about HTML5 and I plan on tackling the basics of HTML next.

Ready to try out Python? Get started. Or if you have a story to share, let us know.

Introducing a New Learning Experience

Today, we're introducing an updated interface that makes learning to build something easier than ever.

Here's what you can expect:

An immersive experience

We've simplified the interface to let you focus on what matters: the lesson, your code, and what you're building.

A better feedback loop

It's easier to learn when you can see you're doing. For most screen resolutions, you can now always see a visual preview of any webpage you are coding, or a terminal output of your code.

A responsive layout

Our new layout fills your screen, making it easier to code on both a small laptop and a large monitor.

We're rolling out our updated interface to everyone over the next week. When it becomes available to you, you'll see a "Switch now" link at the top of any Codecademy course.

We can't wait to hear what you think. Enjoy!

A new career at 55

1. Why did you want to learn to code?

Thirty years ago I was making $15 an hour as an analog draftsman and technical illustrator. Before I was laid off this past November, I was fighting to get $15 an hour for administrative jobs. So instead of letting the world push me into a tiny $15 box, I'm changing the game by reinventing myself.

2. How did you get started?

Earlier this year I started taking SQL Server courses to complement my SharePoint work. Through those classes, I found out that I'm actually pretty good at coding and find it really fun. But I don't have the $3000 it will take to finish the course; that's one aspect of what makes Codecademy so great - it's free!

3. Did knowing how to code help you in the job search?

So I'm 55, and I don’t have a college degree. That means I need to work out ways to foil the resume algorithms that would automatically discard my resume. Key web coding skills such as JavaScript, jQuery, Ruby, HTML, CSS, and Python (PHP & MySQL too) helped shoot me to the head of the queue. My daily hard work on Codecademy also gave me a feeling of competence, which helped me to be confident and knowledgeable in my interviews.

4. What advice do you have for job seekers?

Stay motivated

I also get a lot of self-esteem and motivation through streaks, badges, and points. It helps me stay resilient during the days when I’m facing disappointments, and keeps me focused on positive activities that have the added bonus of being highly marketable.

‘Live’ time, don’t kill it

A key part of the job search is staying motivated and positive during what is a pretty soul-destroying process. I once described Codecademy as "M&Ms for the mind" — it sure beats playing Mahjong, Farmville or other ways of procrastinating. I like to think of myself ‘living’ time instead of ‘killing’ time by learning to code.

Find what works for you

I was diagnosed with ADD a couple of years ago; that accounts for my current lack of a college degree. The cool thing about finally knowing about the ADD is that I can now tailor my approach to learning. Codecademy's small lessons really help a person like me who has trouble focusing on long lessons or technical tomes.

5. Any parting words of advice?

Sell yourself 'long', don't sell yourself short. After the latest layoff, a dear friend of mine who is a senior HR manager counseled me to go after receptionist jobs, because I'm competing against so many younger people for the available 'better' paying administrative jobs in this tough economy.

The advice was meant well, but I didn't want to go backwards in my career. I didn't want to sell myself short, so I started looking for ways to make myself more marketable. I wanted to complement my SharePoint skills, so I found Codecademy to work on HTML and other web tools. Because of what I learned at Codecademy, I'm now a full time SharePoint Content Editor instead of selling myself short.

Want to build your skills? let us know.

Solve problems, learn to code

How did you get started with programming?

A part of me has always wanted to learn to code—and, in fact, I did code a little when I was much younger; I made some awesome HyperCard games with friends for fun. I'm a total nerd at heart, but I ended up following the business path through school and my career.

In December 2011, I left my job to start my own company. I knew I wanted to do something that mattered. It took me a while to figure out what, exactly, but I knew that learning to code would be an important skill to help me get there. It isn't that I set out to become a programmer—rather, I wanted to learn to code to get better at what I do: build great products.

You’ve just launched SimpleTax, an app that makes doing your taxes enjoyable. Congrats! How did you make the jump from Codecademy to actually building your own application?

Codecademy was a great way to learn the syntactical building blocks, but I found that building an actual web app is a whole other world unto itself—the biggest challenge being stringing everything I learned together. It's great that I learned HTML and JavaScript, but how do they mix together to build an app? And how the heck do I get that working with a database?

My tip? Seek mentorship from experienced developers. One of my co-founders, Justin, has been a developer for over two decades. Using the JavaScript and Python I learned from Codecademy, I was able to build our website, most frontend components for our app, and some server automation tools. When I got stuck or wanted a different opinion about how to solve a particular problem, Justin and I could talk it out. In the end, Justin was quite surprised at just how much I had learned.

What kept you going?

Having a larger, longer term project. Understanding how what I was learning would help me realize that project.

What are your tips for someone just getting started with Codecademy?

  1. Get comfortable not knowing everything. Get good at asking, and finding answers to your questions.

  2. Don't blindly copy and paste code examples. One thing I loved about Codecademy was how interactive it was. Later on, when you're working on your own thing and run in to a problem, don't simply paste in the first answer you find on the internet. Try to understand the code and the thinking behind it—even if it means typing it in line by line.

  3. Have a project outside Codecademy. It can be a personal website, or building a small tool that solves an annoying problem for you. It's scary when you first start to mix together everything you've learned… but that's when the real magic happens.

Short on ideas for projects? Check out our projects track.

Code composer

1. How did you get started with coding?

In college I took a few C++ courses for my major and enjoyed them, but as I got more involved with songwriting and the YouTube ukulele community, I decided to go into the music industry and didn't think to pursue computer science.

In April of last year, I was doing some light web work for my employer, and I noticed that my work hours began passing more quickly than before...

Writing code again, I realized that web development may actually be my dream job. I recently finished nine months of work at an interactive agency where I used my HTML, CSS and jQuery skills from Codecademy every day. Now I'm moving to Boulder, CO to work at a SaaS startup.

2. How is learning to play an instrument similar to learning to code?

When I learned to play ukulele, I was teaching myself how to play songs I liked and connected to, and this led to me writing my own music. Same with coding. Find a project you like and connect to.

A lot of people think coding is daunting, but I find it really fun and enjoyable. Not only that, there's a great sense of accomplishment when you finish a project. It’s the same feeling I get, when I complete an original song.

3. What advice do you have for someone just beginning their coding career?

It was a scary jump for me. I moved from a full-time position in music to working as an intern and studying in the evenings. But this really accelerated my learning. During the day, I continued to improve my HTML and CSS skills while I worked on the Codecademy JavaScript and jQuery coursework in the evenings. Even after I became a full-time staff developer, I continued to teach myself Python and Ruby outside of work using Codecademy, which helped me land my new job in Boulder. The variety of courses offered on Codecademy has allowed me to get involved in different types of projects.

My advice would be to just get an internship when you've completed a few Codecademy courses. Internships were such a huge part of the learning process for me. They were frustrating at the beginning, still feeling like you don't completely understand everything, but putting what you've learned into real life projects is a core part of the learning process.

5. So... what's next?
Gaining experience in Ruby! I just finished the Codecademy Ruby course, and my job gives me the opportunity to use that Ruby knowledge on the back end while still making use of my front-end skills. The goal is to be a full stack developer.

Want to follow Jenni's path? Start learning Ruby.

$action = $_GET['PHP Courses'];

Since the beginning of Codecademy, we've worked with the programming community to help them share knowledge. People posting tutorials to their own blogs started to move over to Codecademy, benefiting from the millions of people taking their courses and the status that came with being a teacher with one of the largest audiences in the world. You, as users and contributors, are empowered to choose what to learn and who to learn it from. We've heard endless requests for PHP—one of the world's most popular programming languages—and we spent the past few weeks thinking of an experiment to help you both learn and teach PHP.

Today, we're kicking off the launch of PHP on Codecademy with a lesson we created. We're opening up the entire track for contributions from the community—help pick up where we started and let's build the web's best PHP course together. If you're more interested in taking PHP than helping to teach it, you can help, too. Share PHP with your friends and ask them to help out by tweeting or emailing them.

The content and collaboration that make Codecademy a great place to learn are all thanks to you, and as we work to achieve the best possible learning experience for all users, we're calling on you to help shape the future of the community and its course offerings. You'll notice that only the first course in the PHP track has been completed; we're looking to you, the millions of users who work to make this site awesome, to help direct and build tomorrow's content.

Go ahead and start learning PHP, and if you're ready to take charge of your curriculum, tell us what you want to teach!

What Can Scientists Do With Code?

1. You are a scientist by training. Why learn to code?

I've always been interested in how computers and software work, so I try to use programming in my work as a scientist as often as I can.

2. How have you used code in the lab?

I wrote my own applications after taking the HTML/CSS and jQuery lessons, which helped my colleagues and I a lot in our workflow. These applications are about manipulating strings of DNA and amino acid sequences: Splitting sequences in defined lengths, extracting subsequences, and converting into other file formats.

I later wrote some useful tools in Python to facilitate my everyday work — especially the tedious and repetitive tasks. I really enjoyed the process of coding itself, and when the program was ready to do its work, it was just a great reward.

3. What’s an example of how a scientist could use code?

Scientists could write their own scripts to speed up the data preparation and evaluation process, while decreasing the rate of error if certain tasks have to be repeated. Tons of data are generated every single day and most of it is made available to other scientists online — they just need the right tools to work with it!

In the natural sciences, basically everyone does some sort of statistics. Coding can also be useful if a particular file format must be converted and the software for this task does not exist, yet. As a person who knows how to code, you will be probably able to pull up a script to do this in no time.

4. What about non-scientists?

There are many simple tasks in your daily life, for example if you’ve written a chapter of a novel and want to count how often a particular word occurs. Or let's say you are planning a board game night and cannot find the dice (this actually happened to me) - impress your friends with a digital die simulator! This is one that I wrote in Python.

5. Any parting advice?

My motto is: "If there is a tedious task that you have to repeat more frequently than you like, write a script to let it do the job for you!" This does not apply to any task of course, though it would be nice to have a program that reads your emails every day and writes proper responses.

Want to learn to automate your work? Start learning Python.

More APIs for Your Apps

Last month, we started hosting lessons on APIs to teach people all over the world how to harness the power of real web apps. Codecademy users have integrated videos into their websites, called/texted friends, shortened URLs, and much more. With Codecademy, we think we can bring the power of programming to everyone. That's why we're working with more companies you likely interact with every day in order to show you how programming can affect your workflow and daily life. Use Twitter? So do tens of millions of other people. Most of those people tweet from the Twitter app. With today's new courses, you can tweet from Codecademy or write your own cool scripts that tweet on certain triggers. That's just the beginning.

With these new API offerings, you'll be able to:

  • Control the cloud. With courses from Box and SkyDrive, you'll be able to store and access files from anywhere in the world.
  • Authenticate with other apps using OAuth. These days, countless web applications (including Twitter and Facebook) use OAuth to authenticate users. Let GitHub be your guide to the OAuth2 protocol.
  • Become a consummate consumer. Find the latest fashions with Gilt, the best restaurants from Ordr.in, and pay for it all with Dwolla.

And much more!

API track landing page

Whether you're looking to learn an API that will underlie your web app or you just want to pull in some data for your site, you'll find a ton of useful, customizable, and fun services in our latest batch of API lessons. Our partners have worked hard to bring you a host of new tools to integrate into your own projects—check them out!

(And if you're interested in teaching your API, please don't hesitate to [get in touch with us](mailto:nikhil@codecademy.com?subject=Hosting API Lessons on Codecademy).)

Back in Action

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.


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.


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.


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!

Downtime on Codecademy

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.

What happened?

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.]2

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.

What Now?

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.

Want to change careers? Learn to code

1. You're in the process of making a career change. How did you decide that?

I decided to leave my job in consulting in October and focus on my next move in product management. I felt empowered (as well as nervous) to pursue something so different, but coding on the side showed me it was possible.

2. How did you get started?

I knew I wanted to try something other than consulting, and I wanted to gain technical skills, so I dived deep into coding — I'm on Codecademy almost every day now for language practice, syntax fundamentals, and learning new things like APIs.

3. What are your next steps?

I'm studying deep business analysis and more on databases while I learn to code. Product management is becoming a very viable track, and I'm exploring developer bootcamps too — I'm tempted to become a full-on developer!

4. What are some of your favorite resources for learning to code?

Why's Poignant Guide to Ruby
It’s totally bizarre and random, but it is the first book about programming that I found dorky and funny.

The Q&A forums on Codecademy
Being able to troubleshoot and learn from examples are crucial skills in programming. Developers spend plenty of time exploring the net for information, and getting that experience from a more manageable information pool is a good start.

Women Who Code
It's a strong community in San Francisco that connects women who want to learn to code. It is very supportive and you meet lots of different kinds of people.

5. What advice do you have for changing careers?

Understand what your target position is about - Quora is perfect if you want to ask questions about career tracks, culture, interviews etc.

Conduct informational interviews - Ask about their day-to-day activities and how they got there.

Practice, practice, practice - For product management, that means analyzing websites, features and understanding the pros and cons.

Want to make a career change? Take the first step by writing your first lines of code on Codecademy.

Why follow the norm when you can lead the pack?

1. You studied Economics — why learn to code?

Last January I got a new job. I had new responsibilities and now new opportunities to develop myself in my role, so I started mucking around with Codecademy!

2. How have you used what you learned on Codecademy at work?

I work in the Accommodation Office at the University of York and we use Google Forms to automate housing transfer requests from thousands of students. I used the JavaScript I learned in Code Year to write a Google Apps Script that sends a confirmation email to the student and their administrator. The project grew from automated notification emails into a dashboard to manage the transfer process from start to finish, and produce some pretty graphs along the way.

3. Did learning to code help you land your new job?

My new job is in Data Analysis, and I firmly believe that Codecademy helped me develop the skills (not to mention improving my confidence) to get it. I'm definitely carrying on learning — I want to be coding full-time by the time I'm 30.

4. What advice do you have for those making a career change?

Find a project and own it. This helps you:

Develop transferable skills

Many of the key attributes my employers were looking for I was able to develop through my project; not just coding ability but testing and bug fixing, understanding users' needs, process improvement and project management.

Apply what you're learning

This was that first time I've found learning to code rewarding in itself, the first time I've been motivated to carry on going and the first time I've come away with anything useful to show for myself.

Offer another perspective

Learning to code teaches you a way of thinking and addressing problems which can be applied in so many other areas of life - I don't think people always appreciate that.

5. What do you listen to while you code?

A song, my "coding anthem." The last verse sums up why I think everyone should learn to code.

Try, try again: after a six month break, one man takes Code Year by the horns

You’re a journalist who decided to code— do you think that all journalists should code?

No. Journalism is a broad field and journalists distinguish themselves in their very own set of skills. Not everyone needs to be able to code, just like not all need to be good at writing longread and have a great radio voice.

But coding skills will play an increasingly important part in this mix. And, at least for now, if you know how to code, you have a skill that distinguishes you from almost all other journalists. Most importantly, being able to code means you don't have to play by existing rules, but can create your own.

How would you describe coding?

Highly rewarding, but merciless until you get there. One mistake and the whole thing fails to work. That frustrated me in the beginning. It's like ordering a full three course menu at the restaurant and not getting anything just because you pronounced the name of the wine slightly wrong.

Just one month after you started Code Year you gave up, and didn't touch programming for six months. What finally brought you back?

I don't remember exactly what it was. It always nettled me that I had given up, and since I had publicly announced my plans to learn to code, people kept asking me how I was doing. I think I eventually gave it a second try when I had a few days off and no daily business to worry about. What really pulled me back in was the fact that everything suddenly felt so easy and clear when I continued. That's when I realized that this could really lead somewhere and from there, I never looked back.

And in the process you launched a web app called Instacurate. Tell us about it.

Instacurate helps you get the best out of Twitter, fast. It's a nice way to discover interesting stuff on the web, as it displays links posted on Twitter in a visual, discovery-friendly way. You can search for specific users, hashtags, or browse your timeline, turning Instacurate into a personalised news site.

Instacurate was sort of my graduation project. I tested how far I could go with all that I've learnt during my CodeYear. Pretty far, I realised, also because I could make use of a lot of open source code and, thanks to Github, got support from experienced programmers with the tricky parts.

Now that you’re a coding pro, what do your friends think?

Some think I'm a complete nerd, some are pretty impressed, most of them probably a bit of both. I'm happy to see that quite a number of journalists who started Code Year with me in 2012 who gave up along the way are now giving it another try! But let me be clear, I'm a coding pro on the journalist's scale. Compared to real programmers, I'm still a n00b, but that's fine.

What advice do you have for aspiring coders?

I wrote a book on my whole programming quest, you'll find a lot of advice in there. I strongly recommend having an experienced programmer who you can talk to in person, who can help you with tricky problems or with basic stuff such as setting up a local server on your laptop. That really proved priceless for me.

So... what's next?

I'll definitely keep working on courses on Codecademy, I actually just started the one on APIs which I consider especially valuable for journalistic work. My main goal, however, will be to make programming a more integral part of my daily work, working on story-related code-projects. And, of course, I've got a ton of ideas for the next steps with Instacurate.

Streak versus Hospital: Motivation to the end

Why did you start learning to program?

Flore: I started just after my doctor ordered me to stay home to prevent my baby from coming too soon (I was pregnant at the time). I was bored at home alone, and my husband Benoit who is an IT Engineer told me I should learn to code on Codecademy.

No dreams of becoming a developer then?

Flore: Not quite, but I have to say that your website really is as great as he described it! I was certain that I wouldn't understand a thing, and surprisingly I've learned a lot that was interesting to me — I didn't expect to! Sometimes it’s even amusing as well...

You were on a roll when you had to enter the hospital and lost your streak — tell us what happened.

Benoit: Well that was something that really motivated her to keep it up, especially at that point in the course when things were getting hairy. She was kind of discouraged when she had to break her streak, so I emailed to ask if there any remote chance you guys could pretend she never had to go to the maternity ward and set her streak back to 57 days.

And we were so impressed by her dedication that we bent the rules and reset her streak.

Benoit: Yes! She went back into the hospital again after that, but this time she managed to get a room closer to the WiFi hotspot. When she couldn't connect we would do the exercises by phone and I'd type her answer in for her.

Ultimately the streak broke anyway though...

Benoit: So soon baby Clemence was born, and that night when I realized about the streak I quickly took out my smartphone (still poor WiFi in the new hospital room) hoping that the timezone difference might save us, but it was too late... We both saw the dreaded ‘0 day streak’ on our profiles. But hey — we had a baby!

A developer wanted to find his friends on Codecademy. So he coded up a tool

You work as a web developer, but you joined Codecademy for Code Year. Why?

Code Year was a great opportunity to reinforce a number of programming concepts. I had had a good amount of experience working with HTML/CSS and JavaScript, but most of what I know about Python and Ruby has come out of Code Year.

What do you do as a developer?

My role is to code the functionality into the website, application, or tool working closely with the design and engineering teams. After a site launches I'm also responsible for maintaining the site, fixing bugs, and adding enhancements as requested.

You created an enhancement for us recently, Codecademy User Search. Tell us what how that came about.

I had seen a number posts on the discussion forums asking about social aspects of Codecademy, like making friends and following other users. So I mocked up a prototype Chrome extension that would track your progress and compare it to other users'. Then I created an icon sprite and started working on the next version of the extension.

What was your process like?

I started by first writing the HTML and CSS. I decided to use Twitter Bootstrap because I knew that Codecademy does, so it would help simplify some of the user interface.

After I had the HTML structure and style that I wanted, I started writing the JavaScript classes. I pulled out all of the user information retrieval logic into its own class to keep the model logic (ie. retrieving and organizing the data) separate from the view logic (ie. rendering the data) and the user interface events.

Very well done. Any advice for those just starting out?

I would say:

Pace yourself - At first, it may be intimidating to see all of the available courses. Pick a track that interests you and work through it at your own pace.

Stick with it - If you get caught up on a particular lesson or concept, take advantage of the Q&A sections and the discussion forums.

Ask questions -There is a growing community of Codecademy users of varying backgrounds and skill sets with the same questions and/or answers to those questions. We are all here to learn and help one another.

Learn APIs with Codecademy!

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.

Learn APIs Page

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!

Make 2013 Your Code Year

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.


We're here to help. In 2012, we pulled together an excellent yearlong curriculum that spanned JavaScript, HTML/CSS, jQuery, and Python. This year, we want people to do more than learn to code, we want them to use their code to build something. Learning is the first step, but creating is the next (and maybe more important) step.

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:

  1. 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.
  2. 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.
  3. Pencil the time in - are you always "too busy" to finish your resolutions? Start off by putting the time in your calendar.
  4. 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?


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.

¡Prueba nuestros nuevos cursos de HTML y CSS!

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.


Codecademy in Spanish

Meet our latest language: ¡Español!

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!

Codecademy in Spanish

Psst... Want to help translate? Let us know.

Our five favorite Code Cards

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!
alt text

A neon pink holiday
alt text

A bouncing Feliz Navidad
alt text

Happy minimalistic holidays!
alt text

Spock says "Logical Holiday" in Hungarian
alt text

Didn't make one? No worries, there's still time before New Year's. Enjoy!

Moi maailma: Happy Findependence Day!

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!

Announcing Codecademy Projects

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.

The basic projects will walk you through a step-by-step process to make something of your very own, whether it's a CSS-styled button, a web form, or a JavaScript drawing. The advanced projects are free-form (there's no correctness test!) and allow you to put your knowledge to work to create more complex web applications like a video game or an online store. They include links to helpful courses, tutorials, and documentation to help get you going, and when you've finished, you'll get a link you can use to share your creation on social networking sites like Twitter and Facebook!

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!

New Tracks: Web, jQuery, and JavaScript

Just over a year ago, Codecademy started with a single JavaScript course. Since then, we've built out the JavaScript language track and added curricula for HTML/CSS, the jQuery library, Python, and Ruby.

As we've developed these courses, we've listened carefully to your feedback and worked to ensure the best possible learning experience for you. To that end, we're unveiling three refurbished Codecademy tracks for the web (HTML and CSS), the jQuery library, and JavaScript.

These new tracks are now available on the main tracks page. If you've been working through the original courses, never fear! Your progress is safe and sound, and you can access it by clicking on the "Me" icon in the upper right of the page and selecting "View my profile."

Whether you've been advancing through the original tracks or are looking for a new language to tackle, go ahead and try out our brand-new courses. We're sure you'll enjoy them!

Welsh teachers and Codecademy

We've spent a lot of time working on ways to reach out not only to individual students, but also to educators who can help groups of students learn. To that end, we've created things like our after school kits. Today, we're pleased to announce our newest partnership with Computer Science teachers in Wales.

Codecademy Cymru—a joint program between Codecademy and the Welsh Computing At School (CAS)—will feature a custom curriculum to help teach computer science in schools across Wales. This collaboration marks another small step in our international expansion. For Welsh teachers interested in joining in, please sign in here.

Exercising Mind and Body

Last year Ryan was looking for ways to learn to code. After trying books, videos and articles, he stumbled upon Codecademy. Armed with the skills he learned there, Ryan wanted to build something of his own.

How did you get into programming?

I work as a Network Administrator, but to be honest I didn't know the first thing about web programming. I found dozens of sites and examples that got me going a little bit, but it wasn't until Code Year began that it made any sense to me and started to stick.

Did you need to learn other languages to do that?

All of my code in Sworkit is based on HTML, CSS, Javascript and jQuery. I use a platform called Phonegap to convert the code into native device apps.

At the end of Code Year you did more than just learn to code, you created a fitness app! Were the two related?

The key function for Sworkit, which randomizes workout exercises, is actually adapted from a lesson very early on in Code Year!

The third project you do in Code Year is about building a Dice Game. You'd write var die = Math.floor(Math.random()*6 + 1);.

In Sworkit I ended up using a similar function, var workoutFull = chosenWorkout.sort(function() { return 0.5 - Math.random() });.

Sworkit has been featured in big technology blogs like Lifehacker and Gizmodo, with over 130,000 times. How does it feel?

Those numbers may seem small to some and big to others, but I am completely humbled by the support I’ve received. From the start, I’ve been driven to go beyond being just a consumer of applications made by others and instead to create something of my own.

Would you say it was worth it?
Sworkit has proven to be my chance to give something back. It is my most rewarding project ever.

Teen duo from Texas codes a calculator

"I had looked into learning Javascript, but was too intimidated to start. Codecademy was perfect: we both really like learning by doing. We raced each other to see who could gather more points and finished the courses pretty fast," explains Joah.

After completing the jQuery lesson track, Joah and Haley wrote their very own "Build A Calculator" course on Codecademy.

"We decided to build our own course for others to learn from. Joah worked on the instructions and I fiddled around with the tests," says Haley.

"Afterwards, we received feedback and built another course, Build A Calculator II, which expanded the functionality of our original course."

Joah is currently redesigning his personal website, building Javascript plug-ins, and freelancing as a web developer for local businesses. Haley also freelances, and is working towards a future project that will implement Rails and AngularJS."

Codecademic - neuroscientist discovers Javascript

  • When I'm interested in how our brains support our memories, I use brainscanners. When I'm interested in how our memory systems behave in and of themselves, I simply sit people in front of a computer and get them to do the memory tests without any other fancy equipment, Akira explains.

The only problem with sitting people in front of computers is that it takes up a lot of time. A 40 minute memory test ends up taking several hours of Akiras work time.

"I have long been interested in learning how to present experiments to people online, because it would allow me to reach a far greater number of people and allow me to use my own time far more efficiently. That's where Codecademy comes in."

Akira wrote a small survey program to collect data from test users.

"What I found wonderful was that Javascript allowed me to measure exactly what I needed to measure, button presses and response times, without the need to install any proprietary software. Codecademy got me through the difficult first stages of learning how to use it."

As an instructor Akira believes in helping his psychology students to learn coding skills.

"Coding is the most versatile of transferable skills to be give to psychology graduates who (rightly) believe they are leaving university with the most versatile of degrees. I believe it would be very useful to teach cognitive neuroscience and psychology students all some coding skills. "

Code from Kenya

"During my internship last summer I got access to a computer on a daily basis. It was pretty much the first time I had a computer all to myself. I started googling how the Internet works and how I could master it. That's where my journey with Codecademy started."

Martha quickly realized coding could be something she wanted to do full-time.

"Learning code became my obsession. In June 2012, I took the little I had saved and bought a computer, installed Ubuntu and quit my internship."

Martha spent hours practicing at the Nairobi iHub. Codecademy combined with the community helped her learn fast and in July she landed a job as a developer with a local Ruby on Rails boutique.

"Programming opened an unknown world to me. I was planning on going to medical school, like most top-students in Kenya do. Now I'm taking a year off to explore software development. I'm especially excited about the world of open source software."

Best part about coding? Teaching and giving back to the community. Martha has authored some Ruby Gems and is now helping prepare the Codecademy Ruby track. She and her friends are also planning on classes to get even more Kenyan women excited about coding.

Comments? Join Martha's Ruby beginners group

Resizable Editor: More Room for Your Code

Today we're pleased to roll out one of your most-requested features: a resizable editor for your code! Now you have all the space you need—just click and drag anywhere along the gray bar at the bottom of the editor to resize it.

Currently, only the height of the editor can be adjusted. This feature is now available on all Codecademy courses, so whether you're writing a long nested list in HTML or a complex Ruby method, you can adjust your view to look at all your code at once.

What are you waiting for? Go check it out!

Codecademy college tour

Codecademy's going on tour this fall. We're visiting several colleges to meet with awesome programmers and designers who are passionate about changing programming education. Please spread the word!

If you're interested in meeting one of our developers for dinner on these dates, please apply by sending Sasha your resume/CV and a little about you.

We'll be on campus the following dates:

  • RISD Wed 10/17
  • Yale Fri 10/19
  • NYU Mon 10/22
  • Carnegie Mellon Tue 10/23
  • Columbia Thu-Fri 11/8-11/9
  • Princeton (date TBA)

We look forward to meeting you!

NYU partners with Codecademy

Last Friday, Codecademy and NYU held the first class to teach digital literacy and coding to NYU students. It was a rainy Friday morning, but more than 50 students packed into a classroom to attend this non-credit course (with another 170 on the waiting list). Run through NYU Steinhardt, the class will teach students how to code using Codecademy's platform. When asked about the partnership, NYU's Media, Culture and Communications Department Chair, Marita Sturken, said

"In today's networked culture, learning the basic grammar of coding is an essential part of education, a skill that students will use in a broad range of professions. We're happy to team up with Codecademy to help our students navigate this digital landscape more effectively and with greater insight."

We're really excited to be partnering with a world-leading institution like NYU and thrilled that our courses and learning environment have been incorporated into their curriculum. It's great that educational institutions like NYU are keen to experiment with teaching methods, and we're hopeful that we'll see more of this in coming months. For more on this partnership, see this article in Wired magazine

Ruby and Python are Ready!

We're pleased to make a dual announcement today: our brand-new Ruby track is now available and we're promoting the Python track out of beta, adding a number of new courses to that track as well.

Since our Python track went into beta, we've been listening carefully to your feedback. We know many of you had problems running your code, and when we set out to add a Ruby track, we knew we had to do better. We totally rebuilt our systems from the ground up to give you a faster, more reliable experience. Today we're excited to launch Ruby and re-launch Python on that platform.

We work hard to ensure your experience is as educational, helpful, and fun as possible, and we know it's hard to learn when you suffer interruptions, no matter how infrequent or brief they might be. Thank you for your patience as we've worked to create a safe and stable interface for Ruby and Python, and we hope you enjoy our brand-new coursework.

If you encounter any problems or have feedback on these courses, please contact us; if you're interested in creating additional Python or Ruby courses, please send me an e-mail.

Codecademy takes small steps into Colombia

Codecademy exists to teach the world how to code. Recently, we took a small step towards realizing this vision when we launched a partnership with the Colombian ICT Ministry. Together, we've managed to translate the courses into Spanish and make those courses available. In less than 2 weeks, we've had over 13,000 Colombians sign up for the Appsco initiative which is aimed at promoting entrepreneurship in Colombia. When talking about the partnership, Appsco team leader, Claudia Obando, described it as "a great opportunity for Colombian people to access new ways of creating businesses and foster social change." We'd like to thank our partners at the Colombian ICT Ministry who have been great to work with, as well as all those who have signed up to learn how to code.

Sharing profiles to build community

The Q&A forums have become a great source of community, support, and help for thousands of users over the past several months. We believe learning works better when there are others to help you when you’re stuck, explain tricky points in more detail, and inspire you to learn even more. And at any given moment, there are thousands of users learning right alongside you, and their profile pages help you get to know them better.

Your profile page is designed not only to help you show off your progress and display your accomplishments, but also to let others get to know you better. But curious users that follow forum links to profiles marked as private only get an error message and a heart full of disappointment.

So soon your profile will have two sharing options: visible only to Codecademy users, and visible to the entire web. The latter setting is useful if you want to share your progress with friends, family, and employers even if they’re not Codecademy users themselves.

If your profile is currently set to “private,” you have plenty of time to get your profile exactly the way you like it before it changes to “only Codecademy users.” Feel free to change the name that appears at the top of your profile by changing your Name or Username in your settings page. You can also include any links to your social media profiles like LinkedIn, Facebook, and Twitter.

We hope these changes will improve your experience in the forums and help you get to know the users around you. Please feel free to get in touch with us if you have any questions or feedback.

After-School Programming with Codecademy

We at Codecademy think everyone should be exposed to programming and computer science—especially kids. This back-to-school season, Codecademy wants to help every school to start an after-school programming club—an easy way for kids to start learning the programming skills that formal education doesn't yet provide. Programming is a fun and rewarding way to learn about the technology that surrounds us, and anyone can learn it. Programming will change the way kids think, fostering solid algorithmic thinking skills that will help them in a myriad of pursuits going forward.

Millions of students will go back to school this year to institutions that don't have computer science programs. Great organizations like the Computer Science Teachers Association are working hard to make CS a part of high school and middle school curricula. Since launching Codecademy, we've seen teachers take things into their own hands, with hundreds of them using Codecademy in their classroom and starting clubs after school to expose their students to programming. Based on their feedback, we put together a simple kit for teachers (or students!) who want to start an after-school programming club at their school.

We wanted to make it as easy as possible for anyone to get started so we've included everything you need. No installing, no downloading, and no background in programming necessary (the kit comes with curriculum). Best of all, it's completely free.

We worked with teachers across the world to put together a whole year of learning, starting students at the beginning and showing them the magic of programming through real projects in real programming languages. Kids love creating and customizing their code through our interactive interface. And when they're done, they with web pages and projects that they have built themselves.

Exposing students to programming is one of the most important things we can do—and we can't do it without teachers. That's why we're also launching the "teachers' lounge" for teachers to share stories, ideas, and support among themselves. We're excited to learn even more from the great teachers who are using Codecademy!

Have a wonderful start to the school year!

Python in beta

We announced Python in beta a month ago. The Python track is well loved, but there have been some problems with stability. We've been working on fixing these issues.

From a security perspective, running other people's code (that means you!) on our servers is a nightmare! At this point you may have an understanding of just how powerful a skill programming can be — this is why we've set out to teach the world to code. Unfortunately, giving someone such power over your servers can be potentially dangerous.

Without proper precautions, malicious users could gain access to sensitive information or take down our services, denying other students the ability to learn at Codecademy. We take your security very seriously and, thus, place a premium on security over reliability. So, when it came time to approach our issues present in our platform, it was a no brainer — we opted to simplify the service in such a way that would guarantee security at the expense of slightly less stable service.

For the time being, the service is, for the most part, quite stable. From our monitoring we've observed around 95% uptime. Unfortunately, that 5% downtime means interrupted student sessions, and for that we are deeply sorry. We've been working hard to bring the service out of beta — a feat we hope to accomplish soon.

We appreciate all the help & reports we've received - you can let us know about any issues you run into with Python in this topic.

Your Daily Serving Of Points

Points on Codecademy are a great way to keep track of your progress as a learner. Currently, we keep track of the total points you have earned on the site — you can view that number in either your user badge in the header bar or on the right hand side of your profile.

In addition to tracking your long term learning goals through total points, we have added the ability to track how much material you have covered each day with daily points tracking. From now on you can see how many points you have earned today through your user badge, as well as in your profile. Your profile will also keep track of your 'daily high score' — the maximum number of points you have earned in a single day. There may even be some achievements lurking for your big days!

profile points

Announcing Python

When Zach and Ryan started Codecademy last August, they envisioned a place where anyone could come to learn how to code—in any language—to build the things they dreamed of and to use programming more effectively in their everyday lives. Since August, millions of people have used Codecademy to learn awesome front-end technologies like JavaScript, HTML, CSS, and jQuery.

Moving Server-Side—to Python!

We’ve spent the past few months working on adding more languages to Codecademy and the first one (and most requested!) launches today—Python! Python is used by hundreds of thousands of developers worldwide. Lots of schools and classes use it as a starter language because of its clean and readable syntax. Advanced developers use it at companies like Google and NASA. It goes nicely as a server-side backend to what many users have learned to do with JavaScript.

In January, we started the shift towards supporting more languages with the release of Codecademy Labs (by Amjad Masad, creator of repl.it and Codecademy team member). Labs ran Ruby and Python on the client side, allowing users to use the interpreter offline (so long as the page had been loaded) with reduced latency. Labs has been an awesome testing ground for the technologies that we’ve built, and we discovered that much of the experimentation with client-side Ruby and Python is constantly broken by updates in browsers.

Everything we’re launching today has been built from the ground up and rearchitected to run Python server-side. The infrastructure we’ve built can help us launch other server-side languages you’ve been asking for sooner than we expected.

Create Your Own!

As with all the other languages, all of our content is created by our users. Think you have what it takes to write a Python course? Create one now!

New Keyboard Shortcuts and Next Exercise's Information

Exercise Keyboard Shortcuts

Many of you have requested keyboard shortcuts to navigate between exercises in a course. As of a few days ago, you may have noticed the following revised keyboard shortcuts instructions:

Mac users:

Windows/Linux users:

Why these keys?
We chose key combinations that wouldn't conflict with existing browser actions. For example, a combination of ⌘ + N or CTRL + N already tells your browser to open up a new tab.

With our new shortcuts, you can move to the next exercise of a section by pressing ⌥ + T or ALT + T. You can also move to the previous exercise using ⌥ + P or ALT + P.

Next Exercise's Information

When you complete an exercise, you'll now see the name of the upcoming exercise.

This new change makes it a little bit easier to see your progress in the console.

Discuss these features in our forum!

Keep the streak alive

As someone who learned to code outside of the classroom, I know how important it is to establish a regular routine for applying the concepts that you're learning. The more frequently you use the concepts that you encounter on Codecademy, the more easily they'll stick.

This is why we've just added a new element to your profile: the streak. The streak is the number of consecutive days on which you've completed at least 1 exercise on the site. As long as you keep learning at least a little bit each day, you'll keep the streak alive. This way, you can look back on a long streak and feel proud that you've been leveling up your coding skills every day.

See how long you can keep the streak alive!

Profile Update

Many of you use your Codecademy profiles for a range of purposes, from sharing progress with friends to interviewing for jobs. Learning a new subject takes a lot of time and effort and it's very important to us that your accomplishments stand out and shine.

We've reworked user profiles to give more equal weight to teaching and learning accomplishments. We're also experimenting with ways for learners to share and compete with each other; adding your recent activity and representing your progress in a track-centric way are steps in that direction.

Hope you enjoy it, and happy coding!

Q&A Forums

In addition to improving course quality and the course creation process, we've been busy working to improve the community experience on Codecademy. Forums have provided a resource that supplements course content and allows users to both learn from and interact with each other. Today, we're rolling out a Q&A redesign that makes it easier to find the content and answers you need.

Instead of a general forum for each section, questions are now categorized by course, section, and exercise. Here's an example of what the main view for navigating forum questions looks like:

We've built the new Q&A using backbone.js and HTML5 pushState, which makes for quick navigation through the forums, and we've also made the system more flexible in preparation for future growth (we're also working on more general Q&A beyond course content). At the same time, we are adopting new community norms for Q&A that will make them a more helpful, pleasant place to get questions answered and go beyond the lessons. Be sure to check out the new forums for your courses and send us your feedback!

Investors++: gearing up for a new Codecademy

When Ryan and I started building Codecademy in August of 2011, we were focused on building something for ourselves. I was teaching myself to code and was incredibly frustrated by what I found in books, videos, and elsewhere online. Ryan, meanwhile, had taught hundreds of students while we were at Columbia and wanted to find a way to teach millions more. What started as something built for the two of us has become so much more in the nine months afterwards.

Shortly after we launched, hundreds of thousands of people around the world used Codecademy. Since then, we've heard awesome stories from thousands of them. Some of them are below:

Ben Roberts from Memphis, TN told us about how learning just the basics of JavaScript helped him land a position as a Data Management Specialist - and that knowing the core programming concepts has been been very handy in his new job.

Juliet Waters, a writer from Montreal, has been learning programming with Codecademy with her 11 year old son, Ben, and blogging about their experiences. She told us that six months ago, she didn't know what a programmer really did. Now she's joined a hacker space, hosted coding meet ups, and made her own website and app!

Users like Adam Travers from Bristol, UK have also shared with us how valuable it can be to combine a little coding with an existing skill. Adam is an illustrator and designer, but has found that learning some programming has greatly complemented his existing skills. He now incorporates his illustrations into dynamic websites that he creates himself!

Learning is a complex process, and we've put a lot of thought into designing the best learning experience possible. Many of us taught programming before Codecademy and we took what we learned there from our teaching experiences and put it all into Codecademy. That's why we're so passionate about learning by doing, creating, and building real projects with new technologies.

Along the way, we've been fortunate enough to work with amazing people as both friends, mentors, and investors. In November 2011, we started working with Andy Weissman and the folks at Union Square Ventures. They and our other awesome first-round investors contributed tremendously to both our vision and our progress.

In January, we launched Code Year as a way to show the world just how important programming is. Months later, hundreds of thousands people are getting programming lessons sent to them each week. A few weeks after we launched Code Year, we met Neil Rimer and Saul Klein of Index Ventures. Saul told us, about the world he wanted for his kids - one where code was a foreign language as important as Chinese and English for people to learn. Mary Meeker of Kleiner Perkins visited our office around the same time and painted a picture of a few industries that needed to be shaken up - education chief among them (see her 2012 Internet Trends presentation here). We spent a lot of time talking to Saul and Mary, and Mike Abbott at Kleiner about the future of education, programming, and our workforces.

Ryan, the rest of the Codecademy team and I have thought endlessly about the future of education and how we get there. It became clear that we needed partners who both understood the importance of a global company (more than 50% of Codecademy's users are outside of the US) and the process of scaling a company far beyond the nine people we have grown to now. Index Ventures and Kleiner Perkins are joining the Codecademy family with $10 million in our second round of financing. They're joined as well by Union Square Ventures, Yuri Milner and Richard Branson. It's inspiring to work with both great firms and terrific entrepreneurs like Richard and Yuri.

With this new funding, we're going to keep doing what we've been doing. We've reached millions of students in more than one hundred countries. Tens of thousands of teachers that have created Codecademy courses are now able to spread their knowledge all over the world. We want to make that process better for our students and for our teachers.

Codecademy is a global movement. We've hired people from all over the world - Jordan, Finland, Australia, and elsewhere - and we want anyone, anywhere to have access to an education that can change their lives.

Rarely is there an opportunity to have so much of an impact on so many people, and we're excited to keep working for our students and our teachers. If you think you can help, come join the team.

Best Practices for Course Creation

This guest post is from Eric Weinstein, a proud Codecademy user and talented course creator. Eric learned Javascript through Codecademy and dabbled in Python on the side. He has since created and edited a number of courses across numerous tracks. In this post, Eric shares his thoughts and process on how to get started creating quality courses.

Teaching is hard. The first time I sat down in front of a room full of undergraduates and found myself tasked with communicating information to them, realizing I was largely responsible for their ability to understand the material, I was a little overwhelmed. How do you distill an entire discipline into a sequence of lectures, exercises, and discussions?

Writing courses for Codecademy is very much like teaching a class. You have to figure out the best way to explain technical terms and concepts, the best order in which to present information, and how best to divide the work into digestible pieces—exercises, sections, and courses. When writing my own Codecademy courses, I usually go about it in five steps.

1. Big-picture planning

Teaching a programming language is similar to teaching a natural language like German or Mandarin. The early exercises shouldn’t assume any special knowledge, and later exercises should build on previous ones and give students the opportunity to use what they’ve learned.

I’ve found that it's tremendously helpful to understand the “big picture” aspect of each course that I write—what material to cover, useful analogies and comparisons, and so on. Beyond that, though, I make a conscious effort to explain to students what a programming language is good for and what they’ll be learning in the future, both to keep them informed as well as motivated.

When writing your own courses, set yourself up with a word processor, pencil & paper, or dry erase board and map out the subject you want to teach. Resist the urge to teach too much too quickly! There can always be more exercises to expand and expound.

2. Small-picture planning

Once I know what topic I want to cover, I divide the course into sections and the sections into exercises. (I usually set up the outline of my course first, then fill in the content later). With practice, you’ll get a sense of scope: how much material to cover at which level. A lesson with 100 exercises covers too much; a lesson with 3 exercises, too little. The sweet spot seems to be five to seven sections, fifteen to thirty-five exercises.

3. Exercise and default code creation

Once my outline is complete and I’m comfortable with the amount of information and the order in which I’m presenting it, I start writing exercises, one at a time. I don’t always go in order (see #5), but I do my best to ensure that I don’t introduce anything new without thoroughly explaining it. If I mention something I’ve covered in a previous lesson, I try to link back to it or provide a reminder in the hint.

I don’t usually worry about SCT (Submissions Correctness Test) creation at this point—my concern is writing readable instructions and good default code.

4. SCT building

This is the part I spend the most time on. A Codecademy lesson is only as good as its weakest SCT, and it’s very easy to write overly simple (or even broken!) SCTs if you’re not careful. The best SCTs identify the correct answer, rule out any incorrect answers, and provide useful error messages for common mistakes. For example, let’s say you want a student studying Python to write

p = 'spam'[1]
print p

in the editor. Your SCT could just be return codecademy_lib.printed('p'), but this won’t check to make sure the student actually accessed the second letter of the string by offset; they might have just put print 'p' in the editor and called it a day. A more robust SCT would be:

if type(error) == IndexError:
    print "Oops! You went too far. Use a smaller number in []!"
    return False
elif not codecademy_lib.printed('p'):
    print "Looks like you didn't get 'p'! Did you start counting with 0?"
    return False
    return codecademy_lib.printed('p') and '[' in code

This makes sure that the student didn’t cheat by just printing “p,” while also providing helpful error messages along the way.

I always go through my SCTs as part of my overall run-through (see #5) to make sure I haven’t updated code or instructions without also updating the SCT.

5. Overall run-through

Finally, I run through my course in preview mode, exercise-by-exercise, and then in overall view mode in order to ensure that:

  • I haven’t introduced any information out of order;
  • I haven’t updated code without also updating comments, hints, SCTs, and instructional text (the most common error I run into is changing variable names in one place and not everywhere else);
  • I haven’t written a broken or inaccurate SCT.

If I can run through my entire course twice, providing correct and incorrect answers, without hitting a bug, typo, or inconsistency, I submit the course for review.

And that’s it! I hope some of this was helpful to you—I know it’s been a bit of a learning process for me. Good luck with your course creation, and happy coding!

Please note that a guest post is from a member of the community and not the Codecademy staff.

Preview Mode

In light of the recent efforts to enhance our course creation experience we've added a new feature called Preview Mode.

Before, both course creators and students would see the same functionality when previewing an exercise. This made it difficult to catch submission test errors and generally debug courses.

To make debugging easier, the new Preview Mode adds a retractable console to show helpful messages and error logs. The console will show the following:

  • Errors in the submission correctness test (SCT).
  • Errors in the student code.
  • Helpful debugging messages and warnings.

Now that we distinguish between preview and student modes, we define different behaviors for our teachers and students:

  • Erroneous SCTs will pass in student view (so our students don't get blocked).
  • Erroneous SCTs will fail with a console message in preview mode.
  • Preview Mode will always show up-to-date default code in the editors unless chosen otherwise.

Want to learn more? Read the official documentation here.

The jquery.expect Library

Improving course creator SCT

Since the launch of the Codecademy course creator tool, we've been so lucky to have such smart and dedicated people writing and maintaining courses for our platform. In that short period, in addition to our own experience with the tool, we have received a lot of feedback from course creators about the major pain points of creating and testing a course. So lately we have been iterating and shipping small features and many fixes to the course creator. However, there is one point we haven't really addressed -- how hard it is to check the correctness of the student submitted code, especially in the "Web" courses.

Course creators have to write tests, Submission Correctness Tests (SCT), that would run against the students' submitted HTML, CSS and JavaScript after they've been processed and rendered in an in-browser iframe. The only convenience we gave our beloved creators was the fact that we loaded jQuery for them. However, they had to pretty much do all of the heavy lifting.

The old submission correctness test is wrapped with a function that, when called, expects one of the following return values:

  • true: Test has passed.
  • false: Test has failed with an unknown error.
  • Error string: Test has failed with an error message to show to the

Example from one of our recent Web courses:

if ($('div').length === 0) {
    return 'Did you add a new div to your page?';

if($('div.post').length === 0) {
    return 'Make sure your new div has a class name of "post"!';

if ($('div.post > h2').length === 0 || 
      $('div.post > p').length !== 2) {
    return "Your div should surround the h2 and two p's";

// Regexp to match color in hex and rgb.
var rColor = /ccc|rgb\s*\(204,\s*204,\s*204\s*\)/i;
if ($('div.post').css('border-bottom-style').match(/dashed/) == null ||
    $('div.post').css('border-left-style').match(/dashed/) == null ||
    $('div.post').css('border-left-color').match(rColor) == null) {
    return "Make sure you give your post div a border.";

if($('#nav li').css('padding-top') !== '5px' &&
    $('#nav li').css('padding-left') !== '5px') {
    return "Give your nav elements proper padding!";
return true;

Here are the major pain points and what we can do to make them better:

  • Expressiveness: An SCT is very verbose and there are repetitions in the code.
  • Browser differences and incompatibilities: Even though jQuery greatly helps normalize browser differences, there are many things that it just doesn't help with. For example, when trying to get an element's color using $().css('color') you may get one of the following three formats:
    1. The rgb code of the color.
    2. The hex code of the color.
    3. The English name of the color (if you originally specified it using the name).
Another noticeable issue in the previous example is that checking the border or the padding, using the shorthand notation, isn't possible because most browsers would return an empty string if you try to get `$().css('border')` or `$().css('padding')`. In order to check those CSS rules, you would have to specify and check each direction and style.
  • Readability: An SCT is hard to read, understand, and maintain across all of the browsers that we support.

Enter jquery.expect

jquery.expect or $expect is a simple DOM assertion library built on top of jQuery and is inspired by LearnBoost's excellent expect.js library.

Without further ado let's rewrite the previous example in $expect:

$expect('div').to.exist('Did you add a new div to your page?');

var missingPorHMsg = "Your div should surround the h2 and two p's";
$expect('div.post').to.exist('Make sure your new div has a class name of "post"!')
               .and.to.have.children('h2', missingPorHMsg)
               .and.to.have.children('p', missingPorHMsg)
                            .that.has.elements(4, missingPorHMsg).end()
               .and.to.have.css( 'border'
                               , '1px dashed #ccc'
                               , "Make sure you give your post div a border!");
$expect('#nav li').css('padding', '5px', "Give your nav elements proper padding!");

Thus, we have transformed a very verbose and unreadable test into a succinct and elegant one. $expect is very fluent and expressive and we think it would immensely help in writing SCTs and assertions in general.

$expect has many other features that you can find in the documentation. One new feature is event testing, which was impossible with the old framework.

$expect('button').to.click(function () {

The new $expect library is well tested and stable. Nonetheless, jquery.expect is still in the early development stages and your feedback is greatly appreciated.

We think other people and projects may benefit from a library like jquery.expect, so we have made it available on Codecademy's github under the MIT license. Happy testing!

Course Collaboration: Beta Release

Codecademy isn't just a place for people to learn to code. It's also a platform for people to create courses and share their knowledge with all of our users. As such, we're focused on making it as easy as possible to create high quality courses.

This is why we're starting to roll out a new feature for course creation: course collaboration. Soon, course creators will be able to invite collaborators to work on their courses with them. These collaborators will have full course editing powers, but only the original course creator will be able to add and remove collaborators.

Here's a sneak peek of the "add collaborators" interface:

Invisible Stumbling Blocks

There is an interesting paradox in teaching: the better you know a subject, the harder it is to talk to beginners. Experience means you have forgotten what tripped you up when you were a beginner.

Consider typing. Or division. Or even reading this sentence. Easy now, right? Looking back, it's hard to remember why they were hard. Looking back, the stumbling blocks are invisible.

Let's consider a sophisticated concept you know and love: variables.

Variables are so fundamental that it is impossible to write useful code without them. I bet you think about them about as much as you think about breathing. But they weren't always that easy. Consider the following code:

>>> myValue = 5
>>> myValue + 3
>>> myValue

What will this third command print? The answer is 5, but many beginners will say "8."

Why? Most misconceptions are the brain enthusiastically applying previous knowledge to new situations. If you can figure out what rules and knowledge your students are bringing to the table, you can start to anticipate their misconceptions and design lessons and error messages accordingly.

For example, in basic arithmetic, adding two numbers yields a third number. It is not at all obvious to students that addition does not come bundled with assignment. And from your perspective this is an invisible stumbling block, because this is knowledge you know so well you didn't even remember it was there to be learned.

Before we go on, take a moment to write down everything you know about variables, or know how to do with variables. Try to state the "obvious."

Nice! Now check your list against this one and see if there are any invisible stumbling blocks missing from your list. (The specific bullet points will, of course, depend on the programming language you have in mind, but the purpose of this list is to help you spot invisible concepts.)

  • why they are so hugely important for writing software
  • how to change the value of a variable
  • how to perform operations on a variable without changing its value
  • how to check the value of a variable, both on the interpreter and in a script (crucial for debugging)
  • variables can store any data type, including strings, objects, and in some languages, functions
  • variables can refer to other variables
  • multiple variables can point to the same thing
  • variables can have no value, or an undefined value, and this is different from a value of '0' or ""
  • changing the name, and even capitalization, means a totally different variable to the interpreter.

Want more practice? Try unpacking some other "obvious" concepts, like printing (with a printer, right?), strings (let's make a sweater), and functions (this is a hard one—make sure to practice on a real human).

Crucially important note: this does not mean that you should try to explain all of these things to a beginner, but it is very important to remember that they exist so you don't blithely run your students over rough terrain.

So how can you help students around these stumbling blocks?

1) State the "obvious." It's only obvious once you already know it.

2) Plan to spend 2x-4x more time on the basics than you think students will need. Regardless of the elegance of the explanation, students need time to wrap their heads around new concepts.

3) Iterate on feedback. Put your lesson in front of students and ask them to think out loud as they take it. Asking probing questions will help you uncover their misconceptions, but don't jump in with explanations. Tweak your lessons, then rinse and repeat.

Share your thoughts and collaborate with other teachers and course creators in our course creator forum.

Thanks to E.O. Stinson and Kyle Conroy for their insightful draft feedback.

Tracks gets a design upgrade

Today we're rolling out an improved look and experience for tracks.

Tracks are series of courses grouped to help you master a topic or language. We first introduced them a few weeks ago, following the release of our first HTML and CSS courses. Since then, we've listened closely to your feedback and cooked up a little design upgrade to make tracks even easier to use.

<img src="http://dl.dropbox.com/u/77358750/Blog/2012-05-03%20Tracks%20Announcement/new_tracks.png" alt="New tracks screenshots">

Here are a few of the key changes:

  • View all the courses in a track at once, rather than drilling down into units
  • Clearer visuals for different course types (projects, challenges) and progress
  • More focus on guided content—the "Learn" tab now lists all tracks

We hope these design changes make it easier to overview your progress, work through tracks, and most of all—get you learning to code!

Check out the new tracks! »

HTML & CSS Courses

JavaScript is one of the fundamental programming languages of the internet. It serves as a great introduction to general programming principles, and it shows the power of programming.

Yet, as important as Javascript is, you need to know more than Javascript to create a website. For web development, HTML and CSS are as important as JavaScript is. Since one of the most frequently requested tutorials on Codecademy is one around how to actually create a website, we're launching a new set of courses on HTML/CSS. Best of all, with these courses, you can see what your code is doing in one click. It's the best of learning by doing - write your code out and see what happens instantly!

I learned to write HTML and CSS this way, and we hope that our new tutorials let you learn the same way. We're starting slow - you'll be building a basic webpage. After that, you'll learn how to use JavaScript to spruce up webpages and to create your own personal homepage. Join us!

Create Your Own Codecademy Courses

Codecademy has always been the easiest way to learn to code. Today, we're becoming much more - we'll also be the easiest way to teach programming.
The past few months, our team has focused on building great content for our users - we've pushed out new courses every week since the beginning of 2012 with Code Year, and we've added awesome new features. Some of them we haven't even announced yet! Those of you that have been watching the site closely have probably noticed we changed the editor - we're now showing you where your errors are occurring (you'll see a little "x" next to them). We've also redesigned our interface to show you lessons, projects, and challenges, a new organization framework we've developed and will explain in more detail now.

Today, anyone can create their own Codecademy lesson. We're also expanding beyond JavaScript - lessons can be created in Ruby or Python too! The lessons are just as interactive and exciting as the ones that Codecademy itself has created. We'll be featuring the best lessons prominently on the site as well.

This is part of our mission to teach the world to code. We're excited for everyone to join us in this mission by creating awesome tutorials for anyone to learn to code.

Check out more coverage from the Wall Street Journal, TechCrunch, GigaOM, and VentureBeat.

Announcing meetups and our partnership with the White House

We’ve been blown away by the response to Code Year, our latest initiative. In less than 7 days, more than 300,000 people pledged to learn to code in 2012 (you can still sign up!). We were thinking about how to further spread the word about coding literacy when Aneesh Chopra, the CTO of the United States, called last week with an interesting proposal. We thought the proposal was in line with what we’re trying to achieve here at Codecademy so we agreed to partner up!

Today, we’re proud to announce that we will be working with the White House to get more kids and adults learning to code. With their Summer Jobs+ program, the White House has been working on finding jobs for hundreds of thousands of people over the summer. We think learning to code is an integral part of finding a job in the 21st century economy, so we’ll be helping out by rolling out a course called Code Summer+. This will be a shorter course than Code Year that aims to teach people the basics of programming. You can find a bit more on the White House’s blog.

More importantly, we’re pleased to announce that we’re moving Codecademy from being a strictly online learning platform to something you can do offline as well. Users all around the country and the world are getting together to talk about Code Year and to support each other as they learn. We’ve seen them get together in New York and elsewhere. Today, we’re launching meetups for Code Year and Codecademy participants worldwide. Anyone can sign up to host their own meetup or to attend another one at codeyear.com/meetups. You can meet weekly to discuss each Code Year lesson or whenever you’d like.

All of this wouldn’t be possible without the help of some awesome partners. Today, we’re pleased to announce that Code Year is now endorsed by the Kauffman Foundation, Startup Weekend, Launchpad LA (hosting LA Codecademy meetups!), AngelPad, Teens in Tech, Ladies Learning to Code (in Canada), Women Who Code, Quanta (an accelerator in Kosovo), Open Network Lab (an accelerator in Japan). Companies like Foursquare, Sailthru, Skillshare, and Twilio have signed on to support our effort to get the world to code as well. We’re working with dozens more partners not included in this post (but who will be included in a forthcoming site just for partners).

We’re constantly trying to improve Codecademy for all of our users. This week, we launched new Q&A forums as well - if you look at any lesson on the site, you’ll notice you can click “Q&A” to ask questions and get answers from fellow users. We're grateful for all the user feedback and we're working as hard as we can to deliver a good experience for you all.

Thanks for using Codecademy!

Time for the 'House' Party!

Monday was not only the first day of Code Year, but it was a great day for the Codecademy team. We are super happy to welcome Allison House to the team as our Lead Designer.

We had been looking for a designer for a few months - Ryan and I really place a premium on design and we hadn't quite found someone we thought could help to shape the company's design thinking. We had interviewed dozens of designers when we saw the subject line "Hey Zach and Ryan! Let's talk design" pop in our inboxes. We read into it and discovered that Allison was incredibly talented, well regarded in the industry, and passionate about education.

After a quick Skype, we had a great feeling about Allison. We flew her out to New York for a few days and she proved to be even better in person. We spent a few days redesigning a few aspects of the Codecademy site. Allison's work spoke for itself - she's amazingly talented and will bring a whole slew of awesome new ideas to Codecademy.

The best part though, was hanging out when we weren't working. Ryan, Allison, and I spent an afternoon exploring downtown Manhattan and walked over the Williamsburg bridge to spend some time in Brooklyn. We ended up at the Standard Hotel dancing at 2am (and Ryan and I don't even dance…).

We're thrilled to be able to work with Allison on a daily basis. You'll see her work appearing on the site immediately. Want to come work with us? Check out our jobs page.

Codecademy.push('Amjad').pop() === 'Labs'

Today's a special day for us at Codecademy for two reasons.

First, we're excited to officially welcome Amjad Masad to the team. In a way, you could say that Amjad has always been a part of Codecademy. Ryan and I first got in touch with him after stumbling across his open source console project, jqConsole, this August. We were just beginning to hack together our first iteration of the site, and needed a console for people to interact with. As it turns out, jqConsole was just what we needed (it still powers the Codecademy console today).

But we soon realized that, while his project was great, Amjad was even better. So far, we've interviewed hundreds of engineers as part of our search to find the next awesome additions to the Codecademy team (if think you could be one of them, check out our jobs page), but none have stood out as much as Amjad. He is incredibly talented, experienced, and as dedicated as we are to advancing education online. Not to mention he's just a cool guy (which we found out when we flew halfway across the world to Jordan, his home country, to spend a few days with him).

Second, we're also excited to announce one of the first (of many!) projects that Amjad has worked on with us: Codecademy Labs, the easiest way to play with JavaScript, Ruby, and Python online. Now, after you learn with Codecademy courses, you can use Codecademy Labs to create your own programs, share them via Twitter and Facebook, and show your friends what you've learned. Another special thing about Labs is that it runs entirely on the client side, meaning you can use it when your computer is disconnected from the internet.

(You'll probably notice, too, that we've included Ruby and Python in Codecademy Labs but we don't have any courses for those topics yet. Know that it's just as big of a priority for us as it is for you, and stay tuned for some news on that front soon)

This is the start of an awesome next few weeks for us at Codecademy, full of more courses, more features, and more learning. Check back soon for more and, as always, let us know what you think!


Many of you have sent us emails and tweets over the last few weeks wondering what we've been up to. The answer is that we've been up to a lot, and we're thrilled to (finally) be able to share some of it with you.

Since we launched in August, we've been focused on building a roadmap for making sure Codecademy is a project that lasts not just for weeks, but for years. Today, we're proud to announce our first step toward achieving that goal. We've raised a Series A round of financing from some great investors and entrepreneurs, including Union Square Ventures, O'Reilly, SV Angel, Yuri Milner, Social+Capital Partnership (Chamath Palihapitiya), Thrive Capital, CrunchFund, Collaborative Fund (Craig Shapiro), Founder Collective (Chris Dixon), Joshua Schacter, Vivi Nevo, Naval Ravikant, Sam Altman, and several others. This is the first of many awesome developments for Codecademy.

We're Hiring

We're ready to bring more developers and designers on to the Codecademy team. You can find more about the openings on our jobs page, but we think there are few opportunities that offer you the chance to make a difference in the lives of hundreds of thousands of people. We're creating an educational revolution and improving equality of access to education and we want you to be a part of it. If that sounds awesome, send us an email and check out our jobs page.

New Courses

Expect an update soon, but to celebrate this progress, we're launching our first user generated course. Albert Wenger, a partner at Union Square Ventures, is the author of "Functions in JavaScript," a new course available today.

What Else?

Expect a lot of changes the next couple of weeks - more content, more features, more everything. Ryan and I are incredibly grateful for all of the emails, feedback, and users who've worked with us thus far. We're starting an educational revolution, and we're glad we have some incredible people along with us.