Wednesday, August 31, 2011

Learn to Program Online at Codecademy.com

My friend Judah Himango suggested that I look at the Codecademy.com site. It's just about the easiest way to learn JavaScript anyone could imagine, and it's relatively fun, too. There is a bit of a hook involved. Although you can start the lessons without creating an account, after a few lessons, you are offered the opportunity to either create an account (it's free) or lose your work to date. I created an account.

Once I did, I could continue with the lessons, quit with I got tired/bored (my work was saved automatically), and then sign in later to continue with my saved work. On signing in, you are shown a summary of the lessons you've completed and which ones you have yet to start. After you successfully finish so many lessons, you "earn" achievement badges. For making it through the first four of eight lessons, I earned two achievements.

The lessons are fun, easy, but inflexible. If you deviate from the lesson in the slightest way, you will get an error message. While a hint is provided with different steps in each lesson, if you get stuck, you don't get any other help except to offer feedback about the lesson. There's no way to just get the full solution presented to you. That's good on the one hand, because you aren't tempted to give up too easily and it "forces" you to try and figure out what went wrong. On the other hand, it you truly get stuck...you're stuck. Lessons build on one another (which is a good idea) so if you can't figure one part of a lesson out, you won't be able to just skip it and move on.

The scope of the course, "Getting Started with Programming", only spans eight lessons, ending after the lesson on "while loops". There's no obvious way for me to tell after lesson eight if I'll be able to continue with what I've started to learn. I clicked the "Courses" link in the header menu expecting to see extended (possibly for pay) courses, but all that appeared was the eight lessons for the basic course.

Once you log out, you're returned to the start page. The other options on that page include subscribing to an email newsletter, and sharing your experience with your lessons on twitter and Facebook. Presumably, this is part of how Codecademy plans to market itself. Oh, there is a section called "Create a Lesson", so the Codecademy folks are interested in external participation in expanding their project.

Codecademy seems like it's a project in the making. Since they harvest your email address, both as a condition of creating an account, and during the pre-account lesson when you're asked to enter your email address, I expect that once Codecademy has a sufficient database of names, they'll advance to the next phase of whatever their plan happens to be. That could either mean further lessons will be for a fee or they may continue to offer more advanced lessons without charging.

I'm hardly the first blogger to post a review. About two weeks ago, TechCrunch published their write up on Codecademy, including a talking to Codecademy co-founders Zach Sims and Ryan Bubinski. Sims commented several times on the TechCrunch blog including, "Hi everyone - we might be a little slow right now but we're working on getting things faster. Thanks so much!"

Other thoughts: The "subtitle" of the course "Getting Started with Programming" is "Time to become a coding ninja". That sounds as if Codecademy's intent is to encourage its students to become proficient and even expert at coding. Three things will have to happen. The first one is obvious. They'll need more lessons. A lot more lessons.

The next two points I take from my own experience. You can't really learn something unless you do it all the time. People don't learn to read and write when they do it only occasionally. They need to practice reading and writing all of the time until it becomes second nature. Even if you teach someone the basics of programming, if they don't have any way to apply it on a frequent basis, they'll lose those skills again. Building in some form of continual practice with periodic refreshers of material covered previously will help.

Finally, students will eventually have to learn to "build" something practical. Learning how to determine the length of a string is fine and dandy, but so what? How does that figure into writing a program that actually does something? Lessons will eventually have to lead to practical projects so that at some point, the students will be able to program independently.

Of course, the real power in any programming language is its libraries, so learning JavaScript will have to turn into something like learning jQuery. Another things to consider is whether or not JavaScript will be the only programming language Codecademy chooses to teach. A lot can be done with JavaScript but hardly everything. A server-side language such as PHP might make a good addition. Beyond that, it just depends on what sort of long-term goals Codecademy has for its project.

Presently, although Codecademy has gotten a lot more attention than they expected in the short amount of time they've been online, I'm sure they'd love more. If you know little or nothing about programming but would like to learn in an interactive environment, go to Codecademy.com and try it out.

Saturday, August 13, 2011

Migrating Applications to IPv6: A Review

Paperback: 50 pages
Publisher: O'Reilly Media (July 7, 2011)
ISBN-10: 1449307876
ISBN-13: 978-1449307875

This wasn't what I expected.

I have an interest in migration from IPv4 to IPv6 for reasons I can't really explain right now, but I thought that reviewing Dan York's book Migrating Applications to IPv6 would hone my thinking and expose me to a different way of looking at IPv6. After all, most of us think of implementing IPv6 on an internetwork. We think of the expanded IP address space and the changes in DNS records, how routing mechanisms will change in IPv6 implementations and so on. We don't really think about how the change will affect applications. You might not have thought that IPv6 would change anything about how you write applications. Dan York's book gets you to think again.

But in only 40 pages?

Actually, the content of the book is only 34 pages. That's like a short chapter in just about any other IT book I've ever read or reviewed. Something made me decide to check around at other books on IPv6 recently published by O'Reilly. There's a trend.

Cricket Liu is something of a mainstay at O'Reilly in terms of her DNS and BIND book (in its 5th edition as of June 2006). Her DNS and BIND on IPv6 book was published at the end of May this year. It's only 52 pages long with about 37 pages being actual content. Planning for IPv6 by Silvia Hagen will be published at the end of August and it's a total of 82 pages long. If you put these three books together, you might have the start of an actual IPv6 book based on the most recent IETF RFCs for IPv6 implementation, but I'd certainly expect more to round out the subject.

Each of these three books runs a little over $25.00 each, but you could also buy Hagen's IPv6 Essentials book (published in 2006), with a full 448 pages of information, for only about ten dollars more. I looked through the front matter of York's book trying to find some reason for it's "mini-format". I couldn't find anything. I've never seen a complete book from O'Reilly before that was so thin on content. I had expected an in-depth treatment of the topic but what I found was a "pamphlet" of introductory ideas, tips, and tricks.

York's book does address, in a very compressed space, a number of issues that you will need to consider as an applications developer, and they all have to do with how your application accepts, manages, and stores IP addresses and DNS records. If your app requires that an IP address be input, does it do so allowing enough space for IPv6 addresses? If your app manages DNS records, will it be able to accomodate both A and AAAA records (IPv4 and IPv6 respectively)? Does your app expose any APIs that have an IP address format dependency? As a developer, if you haven't asked yourself those questions before, this book will help you find the answers.

Is the information in this book useful? Yes. I found the content, what there was of it, well written, insightful, and knowledgable. Is it worth 25 bucks? That's hard to say. If I wanted information on application migration, DNS and BIND, and general IPv4 to IPv6 migration planning, would I pay over $75.00 (for the three books I just mentioned) for a total page count of only 174 pages, no matter how well written or useful, when a full-sized book of almost 450 pages is less than half that cost?

Sorry, but I'm having a tough time trying to figure out what O'Reilly's strategy is here. When I requested a review copy of York's book from O'Reilly, I didn't give the page count a single thought. Now, it's all I can think about.

What happened, O'Reilly?

Friday, August 12, 2011

Cloning a Hard Drive with Acronis True Image Home 2011

I bought a Windows 7 Professional 64-bit PC from Dell about a year and a half ago and made the mistake of choosing an OS drive with insufficient room. Needless to say, 18+ months later, it was filling up fast. Even storing all of my data and VMs on a separate (and much larger) drive didn't really help. Fortunately, the folks I work for in my day job had decommissioned a lot of hardware and computer parts and I was able to get my hands on a fairly good sized SATA HDD. Now all I had to do was figure out how to transfer Windows 7 from one SATA drive to another.

After doing a bit of research, including asking the fine folks at Certforums.co.uk for advice (one of the finest technical certification discussion forums on the planet), I chose Acronis True Image Home 2011 for the job. I had initially settled on Acronis' Migrate Easy product, since I didn't need all of the features offered by True Image, but True Image was $10 cheaper and I'm all about getting a bargain.

After stopping by my local computer parts and repair store to pick up a SATA data cable, I was ready to install the new drive and get to work. I reviewed both the online documentation and the User Guide. I felt I was ready to proceed. The process seemed quite simple and I anticipated the whole thing being done in an hour or two at most.

Boy was I wrong.

Setting Up the Hard Drive

After installing the drive, my PC didn't "realize" it was there (my bad), so I went into the BIOS and set the SATA channel the drive was using to Active. After booting into Windows, I used the native Windows Disk Management utility to set the drive to a simple NTFS volume. The computer could now "see" the new drive, so I was all set.

Downloading and Installing True Image

I downloaded and installed a fully licensed version of True Image to my computer. This part was flawless and went just as anticipated. Nothing more to see here. Move along. Move along.

My First Attempt

I opened True Image and, following the instructions, opened Tools and Utilities and then clicked on Clone Disk. The Clone Disk Wizard was easy enough to follow. I went with an Automatic clone mode, selected my source disk, my destination disk, and then started the cloning process. A notice balloon came up to confirm this, but a few seconds later, a second balloon said that I had to reboot or the cloning would abort in 10 minutes.

Like a good little drone, I rebooted my computer.

Nothing.

I logged back in and still nothing. Task Manager confirmed that the application and its processes were not running. I repeated my original steps after checking the directions again and got the same result. I chose the Manual process which let me choose the "move method" (Proportional was recommended since the original disk contents are distributed across the entire, larger space of the new disk). I then started the cloning process and unfortunately, got the same results.

Needless to say, I was getting frustrated at this point.

I went to the Support area of the Acronis website and searched their discussion forum (it was getting late and I doubted anyone would be around at their help desk for live chat). I found the thread Clone Disk Utility Doesn't Work which had only been started a few weeks ago so it seemed to be a good fit for my problem.

The general consensus in the thread was that I should boot the computer from the Acronis recovery disc rather than the OS, and then perform the disk cloning from there. Please note that this was not mentioned in the User Guide PDF but was mentioned in the online instructions. I went back into Tools and Utilities to perform this action but here, I realized that my computer's DVD drive wasn't a burner. In fact, of all the drives on my PC, including removable drives that have since been removed, my DVD drive was the only one the Acronis disc making software didn't see.

The advice I got from the Acronis discussion thread was to download the ISO file and make a disc from that. Fortunately, I had access to a PC at work where I could easily (I love Linux) burn the ISO to disc. I figured I was ready to do this right.

My Second Attempt

With recovery disc in hand, I got home after work. I changed the computer's BIOS boot settings to look at the DVD drive first, then booted from the disc I'd made that morning. The mouse becomes disabled when booting from the disc. There are some instructions that appear telling you how to use various key combinations in order to control the mouse using the numbers keypad. Unfortunately, they go by so fast that, by the time I could read them and attempt to follow the instructions, the computer booted into Windows.

I rebooted with the disc again. Using my arrow keys, I could choose three options: Boot into Windows (the default), boot into the True Image Main Page, or boot into Acronis True Image Report. I tried the Main Page and after receiving a message saying Acronis was loading, a stream of different paths scrolled across my otherwise black screen ending with a blinking cursor. After the line Using /lib/modules/nfs.ko , the computer simply hung with the cursor flashing at me, and leaving me hanging out to dry.

As I'm writing this blog, I found a separate Acronis forum thread that explains this error. The thread content also reminds me that the recovery disc should have had an option for True Image (Safe Mode) which was missing from the menu of options available to me when I used the recovery disc. This behavior was not reassuring.

I repeated the steps of booting with the disc using the True Image option and arrived at the same result. Just for giggles, I booted using the Acronis Report option, but nothing changed. At this point, I was nursing an increasingly dim view of Acronis, their software, and their dodgy documentation. Absolutely nothing is working out as Acronis has described.

I booted back into Windows to consider my options. Going back into the True Image menu in Windows, under Tools and Utilities, I saw an option to add a hard disk. Figuring I had nothing to lose, I "added" the new SATA disk to the computer. That part seemed to go fine and took just a few seconds. Then, just for the heck of it, I tried the cloning process again, duplicating the steps in the wizard that I took before, and using the manual option.

The notification appeared saying that the cloning process had started but then something different happened. A notice appeared telling me to reboot or the process would abort in 10 minutes, but it was a completely different balloon format, appearing in a different place on my screen. I thought this was oddly hopeful and I rebooted, removing the recovery disc before doing so.

Instead of the OS loading, a text-only screen appeared and information flashed by faster than I could read but stopping at "Operation 4 of 5: Copying Partition". Acronis was finally cloning the OS volume from the old to new disk and the information on the screen confirmed the disk types and sizes were correct. Two progress bars were slowly advancing (current progress and total progress). I sipped a glass of water and waited.

The User Guide for this product described the cloning process taking place entirely in the GUI, not in a text environment. The online help completely omits what happens after following the wizard instructions, so I had no idea if this was expected behavior or not. All I could tell was that the cloning seemed to be working.

Once the process was completed, I was prompted to shutdown the computer by pressing "any key".

Once the PC was powered down, I opened it up, removed the original OS hard drive and replaced it with the larger cloned drive. I booted the computer, got back into the BIOS, removed the option for the computer to recognize a third SATA drive on the channel I'd originally selected for the new drive, and then made sure the new hard drive would be the first boot order option.

Then I rebooted and Windows 7 came up beautifully.

After the OS and my desktop loaded, I checked in "Computer" and the OS drive was indeed the new one with plenty of room (the computer wouldn't have booted if it wasn't, but I wanted the satisfaction of seeing for myself).

Conclusion

I must say it worked, which is about the only positive I can write about Acronis at the moment.

While the discussion forum recommended performing the cloning process by booting from the recovery disc, this is absolutely not mentioned in their User Guide for the True Image product. There is also quite a bit of information that is assumed, including the fact that the user has to know to add the disk in the BIOS after installing it physically, and then how to format it in Windows.

After all of my failures, the "turning point" for me, was using True Image to add the SATA HDD. After I did that, the cloning finally worked. Neither the online nor hard copy documents mention adding the disk using the True Image tool at all. If, adding the disk using True Image is a required step, it should have been mentioned in the documentation. I ended up going through that step out of desperation.

My recommendation to Acronis would be to update their documentation to more accurately describe how their product works, including any caveats. It's either hopelessly out-of-date (sadly, documentation continues to be the left-handed, red-headed step-child of software companies), or it's just plain wrong. I write technical documentation for a living and the Disk Cloning section of the True Image User Guide could have been a lot better. If booting from the recovery disc is required, say so. If adding the new disk using True Image before trying to clone another disk to it is required, say so.

Please.

A process that should have taken an hour or two, took me two days. I don't have that kind of time to waste.

If Acronis wants some assistance writing help documentation, they can either hire me or they can find who wrote this tutorial for ComputerShopper.com, which does a fine job of explaining what really should happen, step-by-step (and alas, I found it after the fact), minus the apparent necessity of adding the disk using True Image.

Cheers.

Monday, August 8, 2011

The Python Standard Library by Example: A Review

Paperback: 1344 pages
Publisher: Addison-Wesley Professional; 1st edition (June 11, 2011)
ISBN-10: 0321767349
ISBN-13: 978-0321767349

Stop! If you are just beginning to learn the Python programming language, do not buy this book! This book was written for intermediate to advanced Python programmers who want to be able to put their hands on the Python standard library of modules (which is why I'd recommend buying the hard copy if you meet the qualifications). This is not a book that will teach you the first steps in programming in Python.

Another thing. Although the transition to Python 3 is coming along nicely, like the transition from IPv4 to IPv6, the future isn't here yet. This book was written showcasing the Python 2.7 library and this version of Python will likely be with us for some time. If you're looking for a Python 3 library resource, this book isn't for you.

I'm sure other books have been spawned from blogs before, but I can't recall any right off the top of my head. The book you're reading about has its origins in Doug Hellmann's Python Module of the Week series, so you can always visit his blog to get an idea of how his book reads.

Like many other programming and technical books, it's not as if this information doesn't live elsewhere, but the information isn't particularly accessible in a single location. While every copy of Python ships with hundreds of modules that span a wide field of developers, tasks, and years, the documentation for these modules isn't particularly consistent. That's where Hellmann comes in. He provides one resource for Python module documentation in a consistent "voice", and demonstrates the how and the why of these modules in a straightforward, understandable way. If you've read Hellmann's blog (and if you're an experienced Python programmer, you probably have), you'll more than appreciate his book.

The vast arena of examples are clear but the sheer volume may be a little intimidating. Hellmann's book weighs in at a robust 1344 pages, but then it is "one-stop shopping" at its finest. Programming Python "from scratch" is fine and well when you're first learning the language, but the real power of Python is in the ease of use of its library. Having all that collected in one container is a terrific advantage and, not having to search the web for specific modules, you might just come across a few that you've never heard of before, inspiring you to take a different direction to solve a problem. If you're an experienced programmer, but not in Python, you could get by with going through this book to learn the language, but as I've already said, it's really written for people who already know Python.

This is another fine addition to the Addison-Wesley Developer's Library. If you're a Python programmer, you know you want this book. Go ahead and pick up a copy of Doug Hellmann's The Python Standard Library by Example. You can't go wrong.