Archive for March 3, 2006

Blogroll Added

I have finally gotten around to sharing my blogroll. You will find it at the bottom of the blog sidebar (here). So now this page is officially an interactive design nightmare. The blog format is easy to digest, but it does not provide many good places for posting static content. Everything drops into the sidebar, and content like the blogroll falls far to the bottom. I could use a different skin that provides for some static links at the top. Maybe in the future.

I have to admit that I used Bloglines to convert my links from OPML to HTML but then just copied the static content into the sidebar. I don’t actually add feeds to bloglines, so there wasn’t much to be gained from a live link to their site. Plus, I could not get the include() skinvar to pull the live feed anyway. Let me know if you know of an easier way to convert blog links from NetNewsWire OPML into HTML.

Moodle Presentation Notes

Here are notes for an informal 10-minute BAISnet presentation tomorrow at MCDS.

How we chose Moodle
- WebCT, Dreamweaver, forums, Moodle

Basic capabilities

Easy to teach and learn

Examples
- J. Min: organization, variety of file types
- Annie: scanned handwritten solutions
- Alex: topic format, individualized feedback
- Raleigh: wiki activity
- Daniela: Spanish language interface, wiki activity

Our modifications
- Graphic design
- Authentication

Conclusions
- Different things for different people
- High degree of satisfaction
- Potential yet untapped, plenty of growth to come

URLs I visited during today’s presentation
- eHub
- Moodle
- insideUHS (BAISnet members contact me to get inside)

Africans With iPods?

I recently exchanged emails with a young Columbia graduate who has offered to volunteer his tech support skills at Maru a Pula for a year. This is a generous and well-timed gift to a school attempting to accelerate its uses of academic technology. However, this person was “shocked” to hear that we would consider Macintosh computers, an intranet web site, and Linux on the desktop for a school in Africa. He had been told to accept a “vow of poverty” for his year in the bush and could not reconcile that with the acquisition of current technology at the school.

African with iPod. What?
MAP student with iPod. What?

Why do people have a hard time including iPods and cellphones into their vision of Africa? Is it that they wish to subscribe to a simplistic understanding of life in a developing country? In almost any country, a certain proportion of the population can access modern goods from developed nations. In the mid 90′s, the Botswana Ministry of Education installed Macintosh computer labs with educational multimedia software in all government secondary schools. Cellphones are far easier to acquire than a new land line, and cellular signals travel well across the desert terrain.

It seems that benevolent paternalism is at work here. It sounds great that some westerners (not enough, for sure) care for Africa and its people. But how much do they understand Africans and respect them as equals? If you see an African as your equal, then why would you be surprised to find him sporting an iPod? Surely one realizes that global markets can reach Botswana. Then it would be the African’s fault that she could not afford an iPod.

Botswana is more technologically advanced than many of her neighbors, such as Zimbabwe, Zambia and Mozambique. However, South Africa is a technology leader on the continent, and even economically isolated Zimbabweans can become high-end digital video editors. Africans are more similar to us than different.

Two Podcast Channels Launched

Coincidentally, I launched two separate UHS podcast channels this week. The first is a public channel located at http://www.sfuhs.org/podcast that will carry the usual assortment of audio files that we publish on our web site: speakers on campus, musical performances, and student work that will fly with an external audience. So far, I have posted two items: the recent 30th anniversary presentation from founding head Dennis Collins and current head Mike Diamonti, and the 30th anniversary “Greatest All School Meeting — Ever!”, a two-hour behemoth of alumni stage performances. The latter will be especially worthwhile for our alumni community, most of whom were not able to attend the event.

To deliver podcasts to our external web site, I installed the Nucleus Podcast plug-in on our public blog installation on insideUHS, then created a PHP redirect from www.sfuhs.org to inside.sfuhs.org. This keeps all of the large audio files on our internal server but gives the outside world a friendly URL. The actual feed URL is something like http://inside.sfuhs.org/blog/xml-rss2.php?blogid=9. Thank goodness for the use of the http protocol! Publishing podcasts is much easier than, say, setting up a streaming media server, because we can run it through an existing port (80) and use ubiquitous technologies such as PHP location headers to move requests from one server to another. I easily submitted the feed to iTunes, though I still publish instructions for subscribing to it independently (see my post referencing Jon Udell for reasons why).

The second channel is inside our password-protected intranet, where students and teachers are more free to name names, reproduce copyrighted content for educational purposes, and address issues only of concern to the people who come here everyday. This is consistent with my use of password-protection for forums, Moodle, galleries, and course web sites. Here, the technical side was a little more difficult. Though iTunes very nicely supports authentication for podcast subscriptions, it appears to handle only HTTP authentication, not web forms. We use the latter. However, we do have a legacy domain name that is not tied to our web authentication system. iTunes work with that, but only our active directory users may use that system, not permitting parents to use their individualized logins that we love so much. I assume that we also will not be able to list this private podcast in iTunes but rather publish subscription instructions internally. We will see how well that works. Early adopters: point iTunes to http://library.sfuhs.org/blogs/xml-rss2.php?blogid=101.

I am starting to see the writing on the wall for my choice of Nucleus for our blog software. The Podcast plugin for Nucleus is just basic, but I heard about a WordPress podcast plugin that, “totally manages podcast publishing, enclosures, web players, iTunes integration. Handles files uploaded to the blog, as well as remote files (absolute urls). Presents mp3, m4a, mov, mp4, pdf, etc… files.” (source: D’Arcy Norman). Perhaps the time to migrate is approaching.

Who Needs Infosnap?

I recently received an email from Pingry School, asking whether Infosnap was worth the expense when they had already written their own online admission application. Infosnap was offering some additional features that they did not have, such as the ability for an applicant to save an application and return to it later. I grinned, both because I have received a number of Infosnap sales calls and because I was glad to hear of another school with programming expertise and the desire to write this stuff themselves.

Infosnap home page
A school administrator gives up and calls Infosnap.

Infosnap offers web-based forms for online admission applications and a host of similar functions. We have written our own script to do this.

The title of this post is deliberately sarcastic. Some schools undoubtedly do need Infosnap — we are lucky enough to have the resources to write their sorts of scripts ourselves. I guess I am just tired of the “feeding frenzy” atmosphere I observe in convention halls, where Infosnap and dozens of their competitors hunt for publlic and private school funds. The administrators at these schools typically have no idea whether the company’s services are a good value or not — typically I feel they are overpriced. If a teacher-turned-tech-director can write this stuff among his other responsibilities, then a company should not be charging thousands of dollars and ongoing maintenance fees for the service. Where is the middle ground of low-cost, open-source developers who put schools’ interests first?

I will probably get a comment from an Infosnap employee for this one. Your hard-earned tuition dollars at work!

New Script: Course Requests

After two years of periodic discussion with the academic office, we are about to launch a new online course request form. Up to this point, a number of obstacles prevented us from moving forward:

  1. This is a critical school function that everyone uses. We had to get the user interface right.

  2. Only once we moved to Education Edge 7 (last spring) did it become possible to pull the current course list dynamically.
  3. Our registrar was concerned about losing valuable face-to-face discussions between students and advisors.
  4. The academic office didn’t want to be the guinea pig for student online registration (I am reading between the lines).

Two years ago, it would probably have taken a month to write this script. This time, I wrote about 80% of it in a day! Granted, I did work at home, almost completely free from interruptions that normally make development work nearly impossible during the school day. The result is a tidy little script whose user interface hides much of the complicated work going on behind the scenes.

course requests image

Data is written to a mySQL database, from which the registrar can produce export files for import into a FileMaker database she uses to review requests before sending them to Blackbaud for scheduling. The MSSQL query that produces the course lists is especially cool. I reproduce it here in case you will find it useful:

$query = "SELECT DISTINCT
EA7COURSES.COURSEID,
EA7COURSES.COURSENAME,
EA7ATTRIBUTETYPES.DESCRIPTION AS ATTRIBUTE,
TABLEENTRIES_2.DESCRIPTION AS DEPARTMENT

FROM
EA7COURSERESTRICTIONS,
EA7ACADEMICYEARS,
EA7COURSERESTRICTIONSSTARTTERMS,
EA7TERMS,
TABLEENTRIES,
EA7COURSEGRADELEVELS,
TABLEENTRIES AS TABLEENTRIES_1,
EA7COURSEFILTERS,
FILTERVALUES7,
TABLEENTRIES AS TABLEENTRIES_2,
EA7COURSES
LEFT OUTER JOIN EA7COURSEATTRIBUTES ON EA7COURSES.EA7COURSESID = EA7COURSEATTRIBUTES.PARENTID
LEFT OUTER JOIN EA7ATTRIBUTETYPES ON EA7COURSEATTRIBUTES.ATTRIBUTETYPESID = EA7ATTRIBUTETYPES.ATTRIBUTETYPESID

WHERE
EA7COURSES.EA7COURSESID = EA7COURSERESTRICTIONS.EA7COURSESID AND
EA7COURSERESTRICTIONS.EA7ACADEMICYEARSID = EA7ACADEMICYEARS.EA7ACADEMICYEARSID AND
EA7ACADEMICYEARS.DESCRIPTION = '$currentacademicyear' AND
EA7COURSERESTRICTIONS.EA7COURSERESTRICTIONSID = EA7COURSERESTRICTIONSSTARTTERMS.EA7COURSERESTRICTIONSID AND
EA7COURSERESTRICTIONSSTARTTERMS.EA7TERMSID = EA7TERMS.EA7TERMSID AND
EA7TERMS.TERMID = TABLEENTRIES.TABLEENTRIESID AND
TABLEENTRIES.DESCRIPTION='$currentsemester' AND
EA7COURSES.EA7COURSESID = EA7COURSEGRADELEVELS.EA7COURSESID AND
EA7COURSEGRADELEVELS.GRADELEVEL = TABLEENTRIES_1.TABLEENTRIESID AND
TABLEENTRIES_1.DESCRIPTION='$student{'GRADELEVEL'}' AND
EA7COURSES.EA7COURSESID = EA7COURSEFILTERS.PARENTID AND
EA7COURSEFILTERS.FILTERSID = FILTERVALUES7.PARENTID AND
FILTERVALUES7.FILTERIDVALUE1 = TABLEENTRIES_2.TABLEENTRIESID AND
FILTERVALUES7.RECORDTYPE = '1098'";

The Departments designation for a course is stored in a strange place with a ton of other attributes, hence the “RECORDTYPE=’1098′ condition. We include COURSEATTRIBUTES as an optional join because we store the “signature required” course option there.

We will pilot this script with a small number of users next week and then hopefully roll it out to everyone in mid-April.

Quickly Moving Past Technology

I have been fully occupied in the last few days by a disciplinary case on campus involving technology. This has required me to wear both of my official “hats,” tech director and senior class dean. The latter hat has gotten much more use lately, as the campus-wide discussion has very much focused on social and cultural aspects of the case, most importantly the implications of the students’ actions on the school community. Technology has only been discussed insofar as necessary to clear up factual details of the case. Ultimately, this is good, as it puts the attention where it is most needed. However, the thought remains in the back of my mind that people may be quickly moving past the technological aspects of the case because they don’t understand them. These misunderstandings sometimes perpetuate the misuse of information technologies. When the dust has settled on the case, we will have to provide more direct instruction about the changing nature of interactive web technologies.