Monthly Archives: November 2014

Codecademy Review

About

Codecademy is a computer programming teaching platform “Made in NYC” by a group of about 20 young entrepreneurs whose mission is to “… rethinking education from the ground up.”  The company was founded in 2011 and has since had about “24 million users who had completed over 100 million exercises.”  This is an impressive impact they are having.  I was watching Jessica McKellar’s talk  “A hands-on introduction to Python for beginning programmers” where she taught a 3 hour class to introduce people to Python programming.  During the class she supplemented her talk by having people do exercises on the Codecademy  platform.  I liked what I saw on the Pycon 2014 talk so I decided to run through the Python Track.  Here are some thoughts.

Coding platform

I really like the coding platform.  You get stepped through a programming “track” from the beginning which starts with the basics, progressively getting deeper into the subject and all along the way you are doing something you can relate to in the real world.  An example of this is that when you are learning how to make functions in Python, its done by creating functions to compute the cost of a Vacation.  By the end of that section you have created separate functions to calculate the cost of a rental car, hotel, and airfare.  The lesson shows you how to pass parameters to the function and even call multiple functions within the function.  It’s a very effective way to keep someone interested and grounded in reality, and not just teaching the syntax in an abstract way.

On the left side of the page you get  stepped through a section 1 lesson at a time.  The site tells you what you are about to learn, there is a code example similar to what you are expected to generate, and some step by step instructions on how to do it.  Then in the main body of the page is your code file.  There are strategically places code comments telling you what the existing code is doing and sometimes providing hints like “don’t forget to have a colon after your if statement.  Finally on the upper right side there is a window showing the output of your program.

Website

One of the really cool things is that as you go along through your efforts you earn badges similar to Khan academy. This is a fun addition and I always like getting surprised by a badge popping up after a certain point.  I think there is more that can be done on badges.  This seems to be a pretty nascent feature on Codecademy and should be further developed into something as robust as on Khan Academy.

Codecademy has recently done a complete website overhaul. I didn’t use it before, but the look and feel of the site is modern and fresh.  It is fast and I haven’t really run into any issues.  The site is written in Ruby on Rails and seems to run flawlessly.  As for the look and feel, I don’t think I would change a think.  Kudos.

Missing important languages and frameworks

There is only so much a small team can bite off and chew, but I think there are a couple glaring holes in the curricula at Codecademy.  Missing is anything related to mobile application development.  As this development represents half or more of the current computing worldwide it seems to be a big leave out.  I would like to see a Java track, which is arguably the most popular language and an Android development track which ,again, is one of the most popular mobile platforms.  In the same vein, I would suggest they add Swift programming and iOS framework development.

Also the most popular Python web framework has no track on Codecademy.  Django, which is powering sites like Pinterest, Instagram,

Another major part of programming is data storage and access.  SQL is a “coding language” that would be great to have on the site.  If a lesson track was put up on MySQL (or MariaDB preferably) the knowledge would be usable for pretty much any database backend someone ends up using, whether its MySQL, MSSQL, Oracle, IBMDB2, etc.  With these additions I am sure Codecademy would more than double the user base.

Missing social elements

Something that I find lacking is any social element on the website.  This seems to be missing everywhere on the site.  There are badges, so I would expect that some level of social interaction is in the cards, but even the most basic social interaction is missing.  Blog posts with no comments, no feedback area to suggest new features, no real place to post a bug, and the forums to have discussions with fellow students are hard to find. These items are all a big part of sites like Khan Academy and are a gaping hole in Codecademy right now.

Conclusion

This is a site with a huge potential to help countless millions of people to learn how to program.  The site and company are only a couple of years old at this point so I’m sure there is still a lot to do.   Computer programming and Web represent a huge opportunity for people.  The barrier to entry to creating your own web business is so low.  Codecademy helps to lower the barrier further by reducing the slope of the learning curve.  Programming gives us the language to speak to computers and use our imagination to create anything.  Codecademy is a good example of this as the founders, both from Columbia University, pretty much dropped everything and build a site that went from 0 users to millions in just a couple of years.

I will certainly be taking advantage of the resources, and hope to see Swift/iOS and Java/Android show up on the site sooner than later.

What is an air gapped Computer?

An air gapped (aka Air Walled) computer is essentially a technique for keeping a computer or network secure.  This is usually done by keeping the computer off the network physically.

This can be done to keep sensitive data on the Air gapped computer or network from being compromised, but can also be done to keep another network safe from an unknown network.

Examples from wikipedia follow:

  • Military/governmental computer networks/systems;
  • Financial computer systems, such as stock exchanges;
  • Industrial control systems, such as SCADA in Oil & Gas fields;
  • Life-critical systems, such as: Controls of nuclear power plants;
  • Computers used in aviation, such as FADECs and avionics;
  • Computerized medical equipment;
  • Very simple systems, where there is no need to compromise security in the first place, such as: The engine control unit in an automobile;
  • A digital thermostat for temperature and compressor regulation in home HVAC and refrigeration systems;
  • Electronic sprinkler controls for watering of lawns.

This Air gapping was discussed on the HBO series The Newsroom during the first episode of the third season, called Boston,  where some whistleblower trying to give Neal classified documents asks him to get an “air gapped computer.”  In the show they describe this as a computer that is not and has never been connected to a network. While this is not inaccurate, you can see above that there are other scenarios that qualify.