A few of you know that I sponsor the Koa-Plumeria prizes.  One is awarded to the best essay in an introductory English class while the other goes to the best work in CLU’s literary magazine Morning Glory.  English department faculty  judge the student works and make the selections.

This short article will explain the meaning of the name.  Since I grew up in Hawai’i, I tend to relate to items from my childhood.

Koa is a hard wood, used for musical instruments and weapons, including edge weapons like war clubs.

Plumeria is a fragrant flowering tree whose beautiful petals exude a mildly irritating sap, such that you normally soak the flowers in cold water in the refrigerator overnight before threading them onto leis.

Thus, the idea of the prizes is to reward edgy works that employ musical language, and lovely, sweet writings that get under your skin.

No comments

It’s My Job to Help You Succeed

My students frequently hear me tell them that “It’s my job to help you succeed.”  But what does that mean exactly?
First off, notice the word “help.”  The goal is for you to succeed, which implies personal responsibility on your part. I’m there to assist you in achieving that success.
In the classroom, education is a partnership between student and professor. As professor, it’s my job to impart the information you need to learn the material in a way that’s clear, repeatable, and lends itself to inspiring further study. As a student, your responsibility is to invest the time necessary for learning, do the exercises and challenge me to explain things more clearly if you don’t “get it.”
The onus is upon me to deliver the information and identify the areas that are particularly important, but I can’t do it alone. You can help by engaging as a willing participant in the educational exercise. If it seems unclear to you, then I need to try other approaches to clarify the important stuff. I endeavor to give you the knowledge that will help you succeed, not only in the classroom (e.g., so you can pass tests), but also in your future career.
Indeed, I believe that my challenge is to not just deliver the information but, more importantly, provide analytical tools you can use in life, regardless of the specific discipline you’ve chosen.
If I am successful in this regard, then I have fulfilled my job—I have helped you succeed.

No comments

Once upon a time, a long long time ago in a desert far, far away, I took a Physics class. The professor used one of them thar new-fangled personal computer thingies (pre-Apple, pre-IBM PC) to manage his grading tasks.  He also introduced a solution to the “one genius makes the rest of us look bad” problem.

For the uninitiated, the “one genius” scenario is the case where a test is graded on a curve and just one person aces the test while everyone else bombs it.

His solution was simple: normalize to the second-highest score.

I have adopted this approach for any of my classes with ten or more students. If there are less than that, I’ll normalize to the highest score.

Here’s how it works.  Let’s say a test is worth 200 points. A genius scores 190, but the second highest score is 150.  What I will do is add 50 points (200 –  150) to everyone’s grade.  Everyone, that is, except for the genius-she will get 10 points to bring her grade to a perfect score of 200.

The rationale is simple: If two or more people do well, then my teaching methods seem to be working, but if only one person does well, we assume that person is a “genius” and treat their grade as an outlier to be ignored.

The bottom line: it’s my job to help you succeed, so it’s my responsibility to grade fairly.


Note: Technically I’m applying an offset rather than normalizing, but you get the idea.

No comments

A friend of mine from the University of New Mexico offers a writing tour of Italy each year. Here are the details. Visit tlcwritingtours.com for more information.

TLC Writing Tours of Italy are a unique combination of writing classes, workshops, and cultural experiences over a nine-day, non-stop adventure. From our headquarters in the medieval town of Viterbo, two hours north of Rome, we immerse you in Italy and Italian culture by alternating writing with visits to local towns, photography workshops, cooking classes, a sail on Lago Bolsena, visits to Etruscan ruins and local authors’ homes, wine tastings, home-cooked Italian meals, and much more; essentially we offer a full-immersion Writing and Italy experience designed to make any writer, of any level, feel at home.

This year’s dates are from the 10th through 19th of October, 2014.

No comments

Here is my tentative syllabus for CSC-315, Fall 2014.  The text book has not yet been defined, but this will give you a sense of the material we will cover.

IMPORTANT NOTE: for this class, you will do your programming using Visual Basic in the Visual Studio.NET 2012 IDE.  This is a Windows-based development environment. I have seen students run Visual Studio on their Mac computers atop a Windows emulator, but it is incumbent on you to get it to work. Alternately, the classroom should have VS 2012 installed on every computer.

No comments

After a fair amount of research, experimentation, and poking around, I have finally found a way to return a Domino object (such as a NotesDocument, NotesDocumentCollection, or NotesDatabase) via a Web Service.

Now that I figured it out, it struck me that it’s not something that I’m likely to use because the DXL (Domino XML Language) markup is more complicated than I need. The only scenario I can imagine at this point is if you have a remote Domino server needing a Domino object that is accessible only via a Web Service.

Anyway, it’s worth documenting the process here so I can revisit it later.

For the purpose of this illustration, my code will open the Domino Directory (formerly, the “NAB”) and return the first document found in the People view.  It includes some basic error trapping.

Here’s the code:

 Public Class co_NotesDocument ' name of the "Port Type Class"

    ' note that %INCLUDE "lsxsd.lss" is defined in Options
    ' recommended Web Services tool: SoapUI from soapui.org

    Public Function getNotesDoc( aFault As WS_FAULT ) As String

        On Error Goto errHandler

        ' define basic Domino objects; note the "New" for session
        Dim s As New NotesSession
        Dim dbNAB As NotesDatabase
        Dim viewNAB As NotesView
        Dim doc As NotesDocument

        ' special object for exporting the Domino object 
        ' as a DXL thingie
        Dim exporter As NotesDXLExporter

        ' instantiate Domino objects for the Notes Address
        Set dbNAB = New NotesDatabase( "", "names.nsf" )
        Set viewNAB = dbNAB.GetView( "People" )
        Set doc = viewNAB.GetFirstDocument()

        ' Define exporter object for current document
        ' alternately you can define the input document with 
        ' Call exporter.SetInput( doc )
        Set exporter = s.Createdxlexporter( doc )

        ' return the string of text that is the DXL by assigning
        ' the Export() method's output the function's name
        getNotesDoc = exporter.Export( Doc )

        Goto Done 


        ' If you are using OpenLog.NSF (highly recommended), log 
        ' the error information with LogErrorEx().  This is for 
        ' internal use only (by the Domino developer)

        ' Call LogErrorEx( "Error " & Err & " in line " & Erl _ 
        ' & ": " & Error$, "ERROR", doc ) 

        ' define the return properties for the fault object
        ' this is deliberately generic for external users of 
        ' the web service so it reveals less information about
        ' your infrastructure

        ' assign actor an arbitrary name; maybe substitute calling user
        Call aFault.setFaultActor( "CLU Web Service" ) 

        Call aFault.setFaultCode( 1200 ) ' arbitrary fault code

        ' arbitrary and generic error message returned in the web service
        Call aFault.setFaultString( "Sorry, this program encountered an " _
        & "unexpected error. Ask your app developer to check the logs." )

        ' must do this or the fault is NOT returned
        Call aFault.setFault( True )

        Resume Done

    End Function
End Class ' ===================================================================================


Keywords: Returning a NotesDocument from a Web Service, IBM Notes, Lotus Notes, IBM Lotus Notes, IBM Notes Web Services, How to return a Domino object via web service

No comments

Yes, I’m late to the party, however…..

I’m finally beginning to create Domino Web Service providers.  (If you’re not family with the IBM Lotus Notes/Domino environment, you need read no further.)

I have located several good reference pages by Julian Rubichaux, but still felt like there was some information missing that I couldn’t seem to locate, so I began a series of experiments.

As a result, I’ve begun compiling a summary of thoughts and standards for my environment, some of which I’ll mention here.

Don’t put any code in your web service. Instead, have your web service class inherit from a class defined in a script library. This class in turn inherits many standard elements from a base class in another script library.  While it means you have to go through a couple of extra steps to refresh the service, it means you are able to employ code reuse on a massive scale.  It also means you get better “Intellisense” capability (or whatever IBM calls it).

Define standard classes for your common return values, especially arrays, lists, date/time things, and NotesDocuments, and include them in the base class mentioned a moment ago.

Develop and use a standard error handling approach for all errors. In my case, I leverage Julian’s OpenLog.NSF tool for capturing errors internally, but return a generic error to the web service so as to hide any details about our underlying data structures. I have augmented Julian’s code so that it generates a “cascading log” entry, similar to a stack trace, that shows the call history of the problem area. This helps me debug the problem in my code.

Give serious thought to security. I’m still trying to figure out how to pass Domino credentials into a web service, but I’ve come up with a fairly robust work-around in the meantime. Perhaps I’ll describe it another time, but since it relates to security, maybe not right away!

There’s a lot more that I still need to explore and develop.  I’ll update this entry as time allows.

Note: my environment uses Domino version 8.5.3 but I think these guidelines are generic enough that you can use them from version 7.0.1 on.

Recommended free tool to use when testing Web Services: SoapUI.  It saves you from having to debug two halves of the web service puzzle at the same time.

No comments

I love my Rally Copilote watches and have been using them for years.

There are so many features, however, that I sometimes forget how to set some of them. It seems like the manual is written in one-point font, rendering it almost useless to my tired eyes, so I made this cheat sheet to help me remember the more esoteric settings.  The primary stuff (capturing and recalling stage times, setting time of day, and so on) is not recorded here.

To my students: one of these days I’ll give you a project of modeling this watch with software.

Change time of day from AM/PM to 24 hour
Switch MODE to time of day
Hold SET until seconds start flashing
Press the LIGHT button

Set the countdown timer so that it starts at the next minute, or instant on, or other options
Switch MODE to Timer1
Press START/STOP until you get to the setting you want
Press SPLIT/RESET when done

Set the countdown timer to start counting down when a stage starts (e.g., FIA Start-to-Start timing)
Switch MODE to Timer1
Hold SET until seconds start flashing
Push SET repeatedly until you see Chrono Link, which you then set to On
Press SPLIT/RESET when done

Set the Chrono timer (not countdown) so that it starts at the next minute
Switch MODE to Chrono Time
Hold SET until the display starts blinking
Press START/STOP to change Next Minute to On
Press SET again
Press START/STOP to change Delay Start to Off
Press SPLIT/RESET when done

Set the Chrono timer (not countdown) so that it starts instantly, or after a specified delay
Switch MODE to Chrono Time
Hold SET until the display starts blinking
Press START/STOP to change Next Minute to Off
Press SET again
Press START/STOP to change Delay Start to On, then specify zero (for instant) or other delay time
Press SPLIT/RESET when done

Set the light so it comes on when any button is pressed (useful for night stages)
Hold the LIGHT button until you see the light bulb icon (top right) come on

Turn other features on or off
Hold the MODE button for several seconds until a feature name appears and starts flashing
Press START/STOP to toggle value between On and Off
Press the MODE button to select the next feature
Press SPLIT/RESET when done


No comments

(NOTE: This posting is primarily for my personal reference.)
When trying to print a Blackboard test canvas (to PDF or a physical device), one normally gets only the visible page.  This is because BB uses frames.  However, if you open the specific frame, you can then print the entire page.
Using Firefox, I right-clicked on the frame, selected This Frame | Show Only This Frame, and then was able to print.

No comments

Here’s how to solve that problem.

Exit Notes.

Locate Notes.INI. (It used to be under c:\lotus\notes\ — not under data — but newer versions install under a different location.)

Find a line with AddInMenus

If the only item listed is for Adobe Acrobat, then comment out the whole line with a semi-colon

If there are other add-ins in the line, duplicate the line, then comment it out, then modify the one still active by removing the Adobe reference

Restart Notes to confirm it’s gone.

No comments

Next Page »