My next adventure: World of Webcraft at Myplanet

Next week I’ll be starting my next adventure in coding: the World of Webcraft program at Myplanet. It’s a bit like an internship, but they call it a “hands-on educational program.” I’ll spend 3 days a week for 12 weeks at the Myplanet office, first learning about the tools and processes they use (including Drupal, JavaScript, agile methodologies, and more), and later putting these skills to work by contributing to real life Myplanet projects.

I’ve already been in touch with my 11 classmates via email, and I think they’ll be a fun bunch to work with; the vast majority are alumni of either Bitmaker or HackerYou, so we should all be at a similar point in developing our skills. I’ll be sure to post updates on how things go.

Why you should check out Startup Weekend Toronto EDU: Library Edition

Originally posted at http://toronto.startupweekend.org/2014/03/07/why-you-should-check-out-startup-weekend-toronto-edu-library-edition/

Are you a librarian, a developer, or a designer? Can you spend the weekend of March 28 – 30 in Toronto? If so, you should absolutely check out Startup Weekend Toronto EDU: Library Edition. Read on to find out why.

First things first: what is SWTOLib all about? Developers may already be familiar with the Startup Weekend concept: people from diverse backgrounds come together and form teams to take innovative ideas from the concept stage to lay the groundwork for startup businesses. If this sounds intimidating, it shouldn’t; you’ll be surrounded by like-minded individuals who are all working toward the goal of improving libraries through technology. If you’re a librarian, you don’t need any technical experience, and developers and designers don’t need to know much about libraries. You can find all the details on the SWTOLib event page and on Twitter: @SWTOLib, but I’m here to tell you why you should join in. There are a ton of good reasons; here are 5 of the best:

  1. You’ll meet some amazing people. (Aside to librarians: developers aren’t so bad, if you give them a chance; aside to developers: same goes for librarians). You might meet your future business partner, and even if you don’t, the bonds you form here are sure to have a lasting impact on your professional network.
  2. Everyone loves libraries (except, perhaps, the mayor and his brother). Even if you haven’t been to a library in years, you can surely imagine the possibilities when free access to information meets bleeding-edge technology. Help build the future for citizens of the world.
  3. You’ll have the chance to work on cool ideas you might not have the opportunity to try out at work. Even if you work somewhere as awesome as Google, you can’t spend *all* your time doing whatever tickles your fancy, so come try out some wild ideas.
  4. You’ll be part of something massive. Over 45,000 people have participated in Startup Weekend, in countries all around the world. Or, if you’re more into exclusivity, consider that you’ll be among the very first to harness the power of Startup Weekend and aim it at libraries.
  5. No matter how many good ideas you have coming in, you’ll have even more when you’re finished. Even if you don’t actually launch a new business venture, the ideas you’ve worked on will continue to percolate in your mind for the weeks and months following the event, so make sure you connect on LinkedIn (or trade business cards, if you’re old school like that) with all the amazing people you meet, because your project may very well take on a life of its own.

So go sign up now! I’ll be there as a mentor, which means I’ll be floating around and helping groups however I can. I hope to see you there!

Code School vs. Codecademy: Where are the best coding tutorials?

More than a year and a half ago, I wrote a post about my experience using Codecademy, and to this day it’s one of the most popular posts on my blog. Since then, I’ve tried several different online tutorials for learning to code, so today I want to talk about one of my new favourites, Code School. Let’s see how it stacks up against Codecademy.

You may be wondering why I’m spending time on tutorials now that I’ve completed the program at Bitmaker Labs, but any expert will tell you that learning to code is a lifelong pursuit. There are always new techniques to master and new tools to discover. Both of the sites I’m discussing here have a lot to offer intermediate and even senior developers.

Code School logo

Code School covers a variety of coding topics. Most of these topics are grouped under paths (Ruby, JavaScript, HTML/CSS, and iOS), while a few are classified as electives (including Git and Chrome DevTools). In addition to these “courses,” there is an extensive list of screencasts available on related subjects, but so far I’ve stuck to the courses, so I won’t be discussing the screencasts.

Each course is broken down into 5 or 6 lessons (or “levels,” to use Code School’s gamified language), and each of these sections features a video lecture followed by several exercises (“challenges”). The quality of the lectures is quite good; the instructor is usually shown in a corner of the screen, while the code takes up most of the window, with slick but non-distracting animations, notes, and highlights indicating relevant portions. The videos tend to be 10-20 minutes in length, which is of course much shorter than a traditional lecture. I sometimes find my attention wandering a bit by the end of a video, though, and I feel they could improve the experience by breaking them up into even shorter segments. Having said that, there’s nothing stopping you from hitting pause if you need a break to soak in what you’ve just learned.

The challenges following the lectures use the same general format as Codecademy’s exercises. The site presents you with a customized coding environment in the browser and asks you to solve a problem using the techniques you’ve just learned. One thing I particularly like about the challenges is that you have the option to view the lecture you just watched in PDF slide format, which makes it easy to remind yourself of the most important points of the lecture without having to sit through the entire video again. Each challenge comes with a set of (usually 3) progressively more revealing hints, so if you’re struggling you can get some help without having the whole answer given to you. If you still can’t figure it out, you have the option of accessing the answer, though this will cause you to earn fewer points on that particular challenge.

As I’ve mentioned, Code School makes use of gamification: you earn points for each challenge and badges for each level. Codecademy takes a similar approach, but I found Code School’s implementation to be less obtrusive. Codecademy seemed to be always reminding me of my “achievements,” while in Code School I found it easier to ignore this aspect of the experience. To be fair, though, I think Codecademy has toned it down a bit since I first wrote about them; there is now more of an emphasis on progressing through a track (equivalent to a Code School path) and less on accumulating brightly coloured badges.

So how do these two options compare?

  • I haven’t counted up the topics covered, but at this point in time both sites have an impressive array of choices, so there’s no clear winner based on variety. If you’re looking to learn a particular tool, though, this may influence your choice; for example, Python is only available on Codecademy, while you can only learn about iOS on Code School.
  • In terms of lecture quality, I definitely prefer Code School’s videos over Codecademy’s purely text-based approach. The videos are engaging, and I find they help me visualize what my code is doing behind the scenes. There’s a cheesy jingle at the beginning of each course, but you can skip ahead in the video if they bug you as much as they bug me. I also prefer Code School’s exercises, but there’s a less significant difference here.
  • Codecademy has more of a community feel to it. From the beginning, they have encouraged users to create their own courses for others to learn from (which of course wouldn’t be realistic for Code School’s video-based approach), and there is an active forum where students help each other learn.
  • Hmmm, I guess I haven’t mentioned this part yet: Codecademy is free, while Code School costs $29 per month (or a bit less if you pay per year).

For the moment, I’ve decided Code School’s polished interface and engaging videos are worth paying for. It especially makes sense for me right now because I’m spending a lot of time honing my skills, so I use the site often enough to feel that I’m getting my money’s worth. However, I think both options are great ways to build your skills, whether you’re totally new to coding or have been doing it for a while. Code School offers a number of basic courses for free, so I would highly recommend giving them a try, and go ahead and check out Codecademy while you’re at it.

If you’re looking for more resources, Michelle Glauser has compiled an excellent list (the table is a bit awkward to read on that page, so I recommend clicking through to the full Google spreadsheet).

I’m becoming a web developer!

My contract at Seneca Libraries came to an end last month (I knew there was no chance of extension). I had a fantastic experience, and I will miss my colleagues there. Thanks, everyone!

Though I’m sad to leave Seneca, I’m excited about my next career move: I’m participating in an intensive 9-week bootcamp to become a web developer. The program is called Bitmaker Labs, and it’s located in downtown Toronto (so I can easily take the subway down each day). Starting October 21st, I will be learning Ruby on Rails (and other tools) with a group of 39 other motivated students from a variety of educational and career backgrounds.

What does this mean for GrahamLavender.com? Well, I will be posting less about libraries, at least in the short term. When researching Bitmaker Labs, I found it helpful to read the blogs of students from past sessions, so I plan to document my own experience for the benefit of prospective students. The coursework will take up the vast majority of my waking hours, so I may not post as often as I’d like, but I’ll do my best.

Wish me luck!

Wearing my Bitmaker Labs t-shirt on the rooftops of Essaouira, Morocco

Wearing my Bitmaker Labs t-shirt on the rooftops of Essaouira, Morocco

Learning to code through Codecademy: a great idea, but not quite perfected

As a librarian with a strong interest in web services, I’ve always wanted to improve my coding skills. I’m comfortable with HTML and basic CSS, and way back in the day my friends and I entertained ourselves by creating text-based adventure games in DOS using some form of BASIC, but to be honest, more advanced programming languages intimidated me a bit. So several months ago I was intrigued to discover Codecademy. The claim on their home page caught my attention:

Codecademy is the easiest way to learn how to code. It’s interactive, fun, and you can do it with your friends.

When I first signed up, lessons were only offered on JavaScript, but they have since added HTML, CSS, and jQuery (which works with JavaScript), and more content is being added on a regular basis. In fact, the site offers a course called Code Year, which was designed for people who wanted to make a New Year’s resolution to learn to code. Each week, starting from the beginning of 2012, there is a designated set of exercises for participants to complete.

Registration is free and only takes a moment (Codecademy states that they reserve the right to charge for premium content in the future, but for the moment the site is entirely free). You can give it a try without registering, but I suggest you set up an account to keep track of which exercises you’ve already completed. Each exercise consists of instructions on the left side of the page, and a window on the right with a command prompt where you can enter code and then run it. In some cases there will already be some code to get you started, and at other times you’ll write all the code from scratch. After you hit the run button, you’ll see the results of your code and a link to the next exercise will appear if you’ve written the code correctly. Otherwise, you’ll receive an error message and you’ll have to change your code to make it work. The system makes use of gamification (also popular in libraries): each time you complete an exercise you receive points, and a running tally will show at the top of the page.  Then, once you’ve finished a section of exercises, you’ll receive an achievement badge (an icon that shows up on your profile with a name representing what you’ve learned, such as “Loops in JavaScript” or “Recursive Functions”). After each new concept you learn through these exercises, there is a “project” – that is, a set of exercises where you put your skills to use building a program (such as a blackjack game or a cash register program).

I think this is a great idea. Coding is something you need to actually do in order to learn it –  I’ve tried to learn from a book and found it frustrating to be always shifting my attention from the printed page to my computer monitor. Considering the service is free, I would recommend that everyone give it a try. However, there are a few aspects that still need some work.

What I like about Codecademy:

  • It’s much less imposing than a heavy textbook.
  • Each lesson is broken down into a series of very short exercises, and as long as you’re logged in to your account, this means it’s easy to work through an exercise or two and pick up later where you left off – even if you only have a few minutes at a time to work on it.
  • When you get stuck, you can always refer to the Q&A, which is a forum where you can post questions about a given exercise and other users can post answers. In my experience, I’ve always been able to fix my issues by reading what others have already posted in the Q&A.
  • It’s web-based, which means there’s no software to install and you can log in from any computer (it even works on my iPad, but let me assure you, having to move the cursor around so much on a touch screen is not a pleasant experience).

What still needs work:

  • There is a bit too much hand holding. Too many exercises provide the vast majority of the code for you, and just prompt you to add a line or two. Although this means you can get through more content more quickly, I feel there should be more opportunities to start from scratch. I understand that programmers usually build on existing code rather than starting from a blank page, but I find I learn better when I have created something from the ground up. Some exercises are also too simple, in the sense that they tell you precisely what to type and on which line. I would rather figure more things out for myself.
  • The “hint” feature isn’t used consistently. Usually, this space is used to point you in the right direction if you’re having trouble, and it is a useful feature. However, there are a few exercises where critical information is located in the hint; in other words, there’s no way you could be expected to complete the exercise without looking at the hint. There are also some instances where the hint provides information that isn’t critical but is interesting and helpful to know, which means that if you were to complete the exercise without looking at the hint you would miss out. Of course, consistency is difficult to achieve when the lessons are created by other users, but perhaps they could have an editor look into this.
  • They take the gamification aspect a bit too far. In the early stages it seemed that I was receiving a new achievement every ten minutes or so, which made each one feel like less of an accomplishment. And you earn points for each exercise, even the ones that don’t require you to do any coding (they provide some text for you to read and then prompt you to hit the run button to move on to the next exercise). I would rather have the feeling that I earned all of my points.
  • There are some small technical issues. On a few occasions, I’ve written my code and seen it run correctly, but the error message says I need to change something. Usually when I check the Q&A someone else has had the same issue, and the answer is that you need to use a very specific variable name or change some spacing; in other words, what I’ve done is correct as far as the programming language is concerned, but the Codecademy system won’t acknowledge it. In other cases, the message tells me I’ve completed the exercise, but when I check back later there’s no green checkmark to indicate I’ve completed it. When this happens, I have to redo the exercise in a different browser.

Overall, I am certainly impressed with Codecademy, but it might not hurt for them to slap up a big “beta” sticker while they iron the kinks out. To their credit, each exercise gives you the option to give it thumbs up or thumbs down, so I’m sure they are collecting data as to what works and what doesn’t. I would suggest they take this one step further and put a comment box next to the thumb icons, since there has been more than one exercise I’ve found frustrating enough to want to write down a sentence or two in addition to clicking on thumbs down.

Have you tried Codecademy? I’d be interested to hear your thoughts, so leave a comment below.