... until the collector arrives ...

This "blog" is really just a scratchpad of mine. There is not much of general interest here. Most of the content is scribbled down "live" as I discover things I want to remember. I rarely go back to correct mistakes in older entries. You have been warned :)


Here is how to use Microsoft's makecert utility to generate certificates:

To make a CA certificate (self-signed):

makecert -cy authority -r -n "CN=MM Root Authority" -sv zot.pvk zot.cer

To make a certificate signed by the new CA:

makecert -ic zot.cer -iv zot.pvk -n "CN=MM Test SSL,O=MM Test SSL,C=CA,S=Alberta,L=Calgary" -sv test.pvk test.cer


The AIX has developed a problem during backups.  It signals an error part way through -- tape write error at x feet.  We have power-cycled the unit, cleaned the heads, tried brand new tapes.  Nothing has corrected it.  Since the AIX is no longer under a service contract, and since we will be retiring the AIX very soon, we have disabled the backup procedure.  The only services that remain on the AIX at this time are DNS, WWW, and BACKUP_SETUP.  DNS will be moved to SOL.  WWW is about to be contracted out to a third party.  BACKUP_SETUP can be reproduced simply elsewhere -- say Javascript on a web page?



After much experimentation, I figured out how to build a LISP image (application) in ACL5.  The problem is that the new image-building machinery does not inherit anything from the running image.  The solution is to build a project that contains a single file that loads your system.  For example, here is the file I used:

(cl:in-package "CL-USER")
(load "t:\\dev5\\fsl\\base\\lportabl.fasl")
(let ((p:*module-defaults* '(#p"t:\\dev5\\fsl\\" #p"t:\\dev5\\src\\util\\")))
   (p:require "scaffold/query.l")
   (tquery :ipl-well)
   (p:require "x-dm/impl")
   (p:require "x-dm-sql/impl")
   (p:require "x-ppdm/impl")
   (p:require "x-uwi/impl")
   (p:require "mdl-ipl-well/xmain")

Another wrinkle is that the initial function for the image must return a window.  The image will run until that window closes.  We will probably have to work around this behaviour.  Maybe we can return NIL or a closed window.

In the course of troubleshooting this process, I noticed that the query tool was still using some of the compatibility classes in the ACLWIN302 package.  We should delete this package when developing.


During the ACL 5 port, I discovered that there was a change in the behaviour of format with respect to symbols.  For example, (format nil "~A" 'x) will not return "x" whereas the old Allegro returned "X".   This wouldn't matter much except that some of our macros will generate symbol names using the formula and therefore would generate mixed-case names.  I think that I have found and fixed all such cases.

I implemented the ACTIVESCP package, which allows LISP to invoke scripts through Microsoft's ActiveScript machinery.


Java 2 has a bug, specifically Java Bug Parade #4172371, which we hit from time-to-time.  Specifically, the VM signals a VerifyError if an inner class method calls a private outer class method as its only action.


We discovered a restriction in JDBC today.  The JDBC spec states that when reading columns from a row in a result set, the rows must be read left-to-right and no rows may be read twice.  The spec says that this restriction is for compatibility for some underlying databases.  Presumably, this restriction is in place so that a driver may use a stream to retrieve results, which makes a lot of sense when there is a prospect of BLOBs etc. in the result set.  This problem surfaced when Larry was processing metadata result sets from SQLServer.


I also discovered that IE4 has problems on a machine running MSPROXY.  It reports an internal error when attempting to access any site.


I downloaded and installed the new Microsoft Java VM, version 3165.  It fixed a bug that occurred in version 3158 (and possibly other earlier versions) which caused the following program to hang instead of throwing an exception:

public class MSVM3158 {
    public static void main (String [] args) throws Exception
        try {
            throw new Exception ("xxx");
        } finally {


I did manage to use the Java VM interface IJavaExecute to set up a class path for a DLL, using a wrapper.  There is an obstacle, though:  when the wrapper is registered as a COM DLL, it invokes the wrapped DLLs registration function which promptly registers the wrapped file instead of the wrapper.  Oh well.  The theory now is to write IDL for the IJavaExecute interface (which MS does not supply) and generate a Java wrapper for it so that it can be called from directly within the Java DLL.  That should do the trick.


  • I came across a company whose product offers DCOM connectibility in Pure Java:  http://www.linar.com/jintegra/doc/.
  • I experimented with the Java VM invocation interface, trying to find solutions to the various CLASSPATH problems that we face.  I had some success writing both EXE and DLL variants.  The DLL could act as a wrapper for a VJ6-generated COM DLL by forwarding the COM calls to the library.

Blog Archive