Wednesday, June 27, 2007

Prediction: Harry Won't Make It

I, like almost every other Harry Potter fan, have been wondering for years whether Harry will be alive at the end of book 7. Until last week*, I was still wondering.

At this point, I'm convinced that he won't be; I'll be disappointed if he is, actually.

I'm sure Rowling's got loads of much better ideas than I have, but I won't be surprised if Harry dies in part because he's saving the life of Draco Malfoy or Severus Snape. Or perhaps Snape will sacrafice himself to save Harry**, and Harry will die defeating Voldemort and simultaneously resucing Draco.

Of course, there is this enormous question of who else has been collecting Horcruxes, and I haven't the slightest idea how that character may fit into all this.

That's all. I expect I'm the 37,253rd blogger to make this prediction.

* Yes, Joe, our conversation was the turning point.
** I'll be surprised if Snape is actually evil; it will just be too delicious if he's good.

Tuesday, June 05, 2007

Technology in Education: The Bad (rant warning)

I am increasingly of the opinion that having any classes whatsoever on "applications" is definitely the wrong approach. The proper [and advanced] use of applications is something that should be built into the rest of the curriculum; learning "how to use applications" when there is no purpose at hand is boring and useless, and quickly forgotten. Instead (for example), math classes should use advanced spreadsheet graphing and statistics, English classes should use the word processor and presentation tools, Industrial Arts/Vocational/Career & Tech. Ed./New PC Buzzword classes should use CAD programs, and so on and so forth. (Note that I deliberately did not name "PowerPoint", "OpenOffice", etc. As much as possible, education should be product-agnostic.) However, there is still room for a technology curriculum, and the content of that curriculum should be actual technology concepts, not technology usage. That is, programming, data management, systems administration, etc.

Am I open to changing this opinion? It is constantly changing, and I don't pretend to have all the answers, or the definitive answer. I've never studied a single bit of curriculum design. So I openly admit that I may be wrong, or at the very least that I may overestimate what is possible in real-world classrooms with real-world teachers and real-world students. But:

  • I went through high school in the mid-late 90s (so I've been a student under a curriculum like those I'm criticizing).

  • I obtained a B.S. in Computer Science after that (so I'm a user and a programmer).

  • I have worked as a software engineer and I still write code for a living (so I know what the marketplace is actually like, and what aspects of technology education pay off in the real world).

  • I now work for a school district, and my wife is a teacher (so I've been in and witnessed classes like those I'm criticising, I talk with quite a few teachers and technical folks who work in educational environments, and I've seen very exciting alternatives to what most schools are spoon-feeding today's kids).


I simply can't help but point out what I believe are serious problems in the approach that is so often currently taken, and point toward what I believe is a vastly superior pedagogy of technology. This is intended to be the first of a three-part series of posts on this topic.

Problems with Current Practices in Technology Instruction

Note: I'm going to speak in very general terms, but of course I realize that most technology teachers don't fit this mold precisely, and I expect that many could do a much better job than I of stating these and other criticisms. Also, note that I'm focused on K-12, though similar ideas apply to other age groups.

Here are some characteristics that typify an impoverished approach to teaching technology:

  1. Class or assignment titles such as "Business Applications", "Office Applications", "Word Processing", "Desktop Publishing"

  2. Class or assignment titles with company, product, or project names: Microsoft, Macromedia, Inspiration, Autocad, Power Point, Excel, Shockwave, OpenOffice, GIMP, etc.

  3. Predominance of classroom instructions concerning mouse movement ("OK, everybody, click on 'File', then click 'New'..."

  4. Assignments such as "Write a pretend diary entry"

  5. Assignments such as "Pretend you're on a vacation with your family, and create a postcard to send home to Grandma."

  6. Programming classes such as "Intro to Visual Basic"



Here are some problems with the above approach:

  1. Companies and products go away, and the ones that don't, change. If you think it's important to teach kids how to use the dominant products in the marketplace today, think about how valuable it was to teach kids Word Perfect, or Windows 3.1. Obviously schools will use many software products and projects that are currently dominant, but their dominance should never be the reason for using them (quality and cost to the taxpayers are vastly more important considerations), and nothing specific to a particular version of a product/project should ever be the focus of what is taught. Kids should learn how to teach themselves how to use software, because spoon-feeding them now does them a disservice when the real world will expect them to be dynamic self-teachers.

  2. In the above examples technology is taught and used only in an aimless sense that needlessly heightens disinterest. Rote usage of applications is boring. Pretending, when the pretense is uninteresting, is boring. These examples show a lack of creativity on the part of the instructor, and that lack of creativity extinguishes whatever spark of initiative the students may have. But worse than this, the end goal of these assignments is nothing. Who cares about a pretend diary entry? Who cares about a fake postcard from a pretend vacation? One might care about them in English class, but when the students know the object is to learn to use the software there is no motivation to care about the writing, which is the only possibly interesting part.

  3. Many kids already know the basics of computer usage...it's the teachers who need classes in computer basics. So much of what passes for technology curriculum today reflects not the needs of students, but the limitations of their teachers. Even most of the kids who don't know the basics don't need the plodding approach that teaches Microsoft Word one semester, and Microsoft PowerPoint the next.

  4. Using expensive software in the classroom dampens the opportunities for interested kids to learn outside of class. There is so much Free Software available now that almost all but the most specialized software needs of K-12 classrooms can be met without spending taxpayer dollars, and without denying interested kids the Freedom to explore their interests further at home.

  5. I can't imagine a worse first programming language than Visual Basic. Well, I suppose it beats INTERCAL, but that's about it. Any programming environment focused primarily on producing GUIs starts new programmers definitively on the wrong foot. New programmers should be learning the concepts of structured programming and data structures, and the temptation to play with GUIs (and even working in a GUI environment, IMO) is solely a distraction from these core concepts that should be the focus. This isn't to say that writing good GUIs has no place in a HS curriculum...but the "introduction to programming" class isn't that place.

  6. Substantial portions of the above curriculum could be directed at monkeys almost as well as to children. Training is when you show people how to use a product. ("Today we're learning Microsoft Word. Click 'File', then 'New'...")

  7. A technology curriculum such as the above leaves the rest of the curriculum and the rest of the teachers unchallenged to integrate technology well. There already aren't general purpose "how to use a graphing calculator" classes, because the higher-level math courses include that. There aren't "how to use CAD software" classes because the classes where kids learn to use CAD software are focused on architecture and design. Including any classes in the curriculum that focus on software usage makes it easy for teachers of real subjects to avoid real integration.



Next: Characteristics that typify a rich approach to teaching technology

Monday, June 04, 2007

Ubuntu Network Installs made easy

The following high-level instructions allow you to PXE boot and install Ubuntu just as if you had a CD in the drive.

  1. Install an NFS server and a TFTP server on a system on your network.

  2. Download the ISO you want to boot over your network.

  3. Mount the ISO and copy all the files to the NFS server, and export the directory.

  4. Copy the contents of install/netboot from the CD into the tftpboot directory on your TFTP server.

  5. Copy vmlinuz and initrd.gz from the CD (you may have to search for them, they're usually in /install or /casper) into the tftpboot directory; rename them to be something unique if you will have more than one version in the directory.

  6. Edit pxelinux.cfg/default to point one of the LABEL entries to your kernel and initrd, with the following options to tell casper to mount / via NFS -- your entry should look a lot like these three lines:

    LABEL edubuntu
    kernel vmlinuz-edubuntu-iso
    append vga=normal initrd=initrd-edubuntu-iso boot=casper netboot=nfs nfsroot=10.20.1.2:/opt/ltsp/edudesktop-iso --

    nfsroot points to your NFS server and the path to the directory where you copied all the contents of the CD.

  7. Set the following options in dhcpd.conf on your DHCP server:

    next-server 10.20.1.2; # this is your TFTP server
    filename "pxelinux.0"; # put this in verbatim


  8. Profit!



man casper for more information about casper, which is what makes this so easy.

Update: This is more fully explained in the Ubuntu community documentation.