C++, rdesktop and Tie::Array::FileWriter

[ This is an entry from my Journal on Advogato. I have an account there.

Today I worked on a C++ conversion of rdesktop. I originally started working with rdesktop after some searching for a program that would run under Red Hat Linux 7.2 and let me access my Remote Desktop on another computer running Windows XP Professional. I was able to run the Microsoft client on a Windows 98 virtual machine running under VMware, but I really wanted a Linux solution. The plan is to migrate the XP box to a virtual machine on the Linux computer and then access it from any Linux computer via the Remote Desktop stuff.

Anyway, I started out messing with the code thinking I'd refactor it a bit (to deconvolve the X windows and RDP protocol stuff) and then figure out how to hook SDL into it and possibly make a GNOME interface for it. I got partway into that process and got frustrated because I wanted to program in an object-oriented style with inheritance and it was not fun doing that in straight C.

So, I bit the bullet and spent yesterday doing much of the conversion to C++. This morning I finished most of the rest of it, finishing off early this afternoon. I've introduced a bug (or two or more) that I'm tracking down right now, but when I get it back to functioning I'll put it up someplace public. I'm trying to use C++ isms as much as possible (such as avoiding #define). It will be interesting to see how this works out.

Also today, I developed Tie-Array-FileWriter in a little over an hour to scratch an itch at a former client that would otherwise have required modifying the source of a large framework I built for them. That was fun!




HINT: No, it doesn't mean 'slow memory chips'.


"Usenet interprets censorship as damage and routes around it." — John Gilmore, 1991

This is commonly misquoted with "The Internet" substituted for "Usenet".

The correct reference appeared in MIT Tech Review's November 2001 issue, on page 23 in "Super Sync" by Simson Garfinkel (partial content available online here).


Jako Lives!

My little language for Parrot lives! Dan Sugalski posted about it here.

We have the first language that targets Parrot as its back end. Gregor Purdy whipped up a small language he calls Jako[1] that compiles to Parrot assembly code. I've checked the compiler and a test program into the CVS repository, in the little_languages directory, for all to see and fiddle with. Sync up and give it a whirl! [1] Jako is one of the species of African parrots, also called the "gray parrot"

I’m now a Parrot Committer

Simon Cozens just announced that Brian Wheeler and I have been given committer access to the the Parrot source repository.

Newsgroups: perl.perl6.internals
Date: Fri, 14 Sep 2001 12:48:00 +0100
To: perl6-internals[at]perl.org, bdwheele[at]indiana.edu, gregor[at]focusresearch.com
Subject: Welcome, new committers!
Message-ID: <20010914124800.A7439[at]netthink.co.uk>
From: simon[at]netthink.co.uk (Simon Cozens)

I'm pleased to announce that Brian Wheeler and Gregor Purdy,
after providing a good number of high-quality patches, have
now been given committer access to the Parrot CVS tree. They
join myself and Dan, the other committers at the moment.

If you're feeling left out, don't! We'll be giving other people access
very soon, once I've found some other people who are doing good work
and I've worked out a way to co-ordinate information between

So if you feel you want CVS commit access - look critically at
the TODO list. :)




Today, I tried to access http://www.ecrm-epps.com/, and here is a screenshot of the page I got due to some trouble accessing the site. Since I can't access the home page, how am I supposed to get the email address off it?



Having read Robert Levin's short 1999 paper Agalmics: The Marginalization of Scarcity some time ago, and again today, I've found it intriguing both times.

Here are some comments on the paper.



(This week's word is brought to you by my mis-step with the last two weeks' words.)



This week's word is brought to you by Sharon Purdy, Sean Conley, and the 74th Annual Scripps Howard National Spelling Bee.


Brain-Dead Cruise Control

My parents owned a 1984 Oldsmobile station wagon which shared with other cars of the same era a flaw in the design of the cruise control mechanism. If you were driving along using cruise control and dropped the car into neutral, the car would start to slow, and the cruise control would open the throttle a bit, but the car would still go slower, so the cruise control would open the throttle more... It is of course irrational to attempt to make a car go faster by opening the throttle when the car is in neutral.

Confused Window Lock

The 2001 Dodge Durango has a window lock feature so the driver can prevent the rear passengers from opening their windows. While this button is engaged, the driver can still operate the rear windows with his own controls. However, once the window is open, the rear passenger can prevent the driver closing it by holding his button down. Clearly the window lock feature is not causing the rear control to be ignored totally.

Cool CD Protectors

A few months back, I received a CD from someone in a unique protector. It is a clear plastic "clamshell" case, and it is very nice. I wanted to have some more for some of the other CDs I have laying around, but I had never seen them at the store.

Fortunately, it has a patent number on it (two numbers, actually: US PAT#5,713,463 and US PAT# DES 387,217). I did some investigation at IBM's Intellectual Property Network (now known as Delphion), where I found the patent!

After some searching around, I found other references on the web to one of the inventors, Daniel Tagtow (Senior Product Designer at DesignEdge). I sat on this information for a little while, but finally gave him a call in early 2000-02. He was very helpful, and pointed me to The Dering Corporation's web site, http://www.buycshell.com/ (thanks, Daniel).

To get your own C-Shell (love that name) CD cases, follow the link above or click on the image below).

Buy C-Shells



HINT: It is not "instructed in rational thought". Nor is it "relating to the study of tension" (with a tip of the hat to Joe Culhane).



"Tact" is the art of insulting people without them knowing it.

NOTE: I think I got this from someone else, but I can't find it in my quotations book, nor have I found it on the web via Google. If anyone knows of a citation for this, I'd like to have it.



This week's word is brought to you by my newly born daughter Mary Elizabeth Purdy -- born 2001-04-13 at 11:39 PM, 7 pounds, 6 ounces.



The Rules

After long study and deep contemplation, I have finally managed to capture the rules that are the foundation of a happy relationship. I share these now with you in the hope that they will bring to you at least some small part of the marital bliss that they have brought to my home.

  1. Momma gets what Momma wants.
  2. You must never forget Rule 1.
  3. If you do forget Rule 1, your only hope of redemption is to get Momma more of what Momma wants.
  4. Don't ask what Momma wants — you are supposed to know what Momma wants.
  5. You must always pay very close attention to Momma; only then will you know what Momma wants.
  6. If you follow The Rules, Momma may permit you to get what you want.
  7. Momma wants you to follow The Rules.

Of course, implicit in this is Rule 0: "Momma makes The Rules".



HINT: It is not the correct response when your mother asks you "Who do you love?"



HINT: It is not the amount of money required to buy an ounce of caviar.



Unicode Characters for Task Lists

Back in 1993 I developed the habit of putting boxes by my task list items and then filling the boxes in in various ways as I worked on and eventually completed the tasks. Today, I found the following characters in the Unicode 3.0 standard. These could be used in a software system that implements my task list management technique.

NOTE: These characters may not display correctly for you if your browser is not fully Unicode capable.

Unicode Example Description Meaning

box To Do
0x22a1 box w/dot Considering
0x2341 box w/slash Working
0x25ea box 1/2 filled Completed

box filled Verified

box w/x Cancelled
? ? box w/right arrow Forwarded