DeepNorth is currently certified at Journeyer level.

Name: Bob Trower
Member since: 2003-06-23 22:59:51
Last Login: 2013-08-27 01:43:41

FOAF RDF Share This



Hey -- (finally) more open source here:

toogles (release of MD5 hashing utility)

There really is supposed to be more to come. I have written tons of little programs/hacks to do things for my ongoing 'data packaging' research. Trouble is, they are HACKS!!!. Some are so bad, I wouldn't even lend them to a friend, let alone publish them. Still, in publishing as in voting, it should be done early and often.

Did the following 'open source':


It has been used in a number of places. You can do a google search for me and find places where it is used in free code.

Published the following article on rms and free software:

In Praise of Richard Stallman

You can find my resume on my site ( or here Bob's Resume. I've been around.

You will find in the morass of sites that my company (Trantor) has created (as and that we pretty much exclusively use free software on our sites these days.

Here are some thoughts about migrating from the evil empire on my personal wiki:

Microsoft FrontPage and here Migrating from Microsoft

I have not been well known as a free software developer, since to put food on the table my work has been for hire through most of my over 20 year career. However, I am personally committed to the creation and use of bona fide GPL'ed software since it is the only sure path to make certain that programmer's remain free to practice their art.

Best Regards,

Bob Trower


Articles Posted by DeepNorth

Recent blog entries by DeepNorth

Syndication: RSS 2.0

Yeah, you would think I would have something better to put here after such a long absence. Still, it's something.

This is nearly identical to the code for the Credit Card Checksum posted earlier. This code does the validation of the checksum for an Ontario health card. I needed it for a project with the Ministry, found my own code on the Internet (!) and hacked it to fit.

I don't know the exact quote, but someone well known in open source said something to the effect that real men don't do backups, they just publish to the Internet. Here's my backup. Cheers,


'Health Card Validation Routine (Visual Basic)
'Copyright (c) Bob Trower, 2001, 2010
'This source code may be used as you wish, provided
'that these comments remain in the code.
'Returns True if the card number is valid, False otherwise
'Algorithm is the one specified by the Ontario Ministry
'of Health (in turn similar to the 'LUHN' formula
'specified in ANSI X4.13)
'Last Digit of Card Number is the 'check digit'.
'From right to left, take value of check digit and add:
'   double every second number and sum resulting digits.
'   add the non-doubled digits.
'If the Health Card Number is valid, the final sum
'will be an even multiple of ten ((x mod 10) = 0 ).
Function IsValidHCNumber(HCNumber As String) As Integer
   Dim CheckSum As Integer
   Dim ThisDigit As Integer
   Dim i As Integer
      ' Note: Order of Steps is important...
   IsValidHCNumber = False ' Redundant in VB, but good 
   If Len(HCNumber) = 10 Then ' Known Card numbers are 10 
digits long
       CheckSum = Val(Mid(HCNumber, Len(HCNumber), 1)) 'Last 
Digit is CheckSum Digit
       For i = Len(HCNumber) - 1 To 1 Step -2
           ThisDigit = Val(Mid(HCNumber, i, 1)) * 2 ' Double 
these digits
           CheckSum = CheckSum + (ThisDigit \ 10) + 
(ThisDigit Mod 10) ' Add the sum of the resulting digits
       For i = Len(HCNumber) - 2 To 1 Step -2
           CheckSum = CheckSum + Val(Mid(HCNumber, i, 1)) ' 
Add these digits
       If CheckSum Mod 10 = 0 Then ' Resulting number should 
be an even multiple of 10
           IsValidHCNumber = True
       End If
   End If
End Function

The base64 source code that I released in 2001 ( has found very wide application and is used in remarkably diverse software. Below are some examples.

In the preamble to the code, I say that 'Generally' "This program is designed to survive:" I would say that it has done admirably in that regard. However, it is not form, nor even function that I think is responsible for its travel. It is a combination of there being few reasonable alternatives, this *being* a reasonable alternative AND the function itself is ubiquitous. Nearly every kind of non-trivial software eventually deals with mail (there is an old programmer's joke about this) and mail means attachments and attachments mean MIME and MIME means base64 encoding. Chances are; this is not even that well traveled as such. It may just be the 'luck of the draw' that there are so many requirements for this that mine was adopted by chance. I like to think the fact that there were (and are), no known bugs after seven years of use has something to do with it. I also fancy it was well written. I like to think it pleased other programmers, as it was intended to do. YMMV. Note that at least *some* of these programmers had a clue.

Editing application The World Wide Web consortium's HTML editor. This is the body responsible for setting the standards for web pages on the Internet

Secure Operating System Stanford University -- Histar Secure Operating System.

Gammu utility and library for mobile phones

WebClaire Claire language kernel.

Asterisk Voice over IP Appliance (

ziproxy -- HTTP proxy server

Epona Internet Relay Chat (IRC) libraries

Word Document to PDF file converter

Colorado State University Network Security -- Reflected DNS daemon

OpenQM post-relational database

HDTV Set Top Box (Digital Television)

WinRSA -- Public key encryption for Windows

Partman-Crypto (use in Debian Installer -- Note that the b64.c code is used in a number of places in most major Linux Distributions.

SMTP Stress Testing Tool

Philips Flat Panel Television Sets (i.e.

Technical University of Denmark, Key Management in Cryptographic Access Control (Thesis)

eMail -- Command line SMTP email utility.

Recommended by IBM for use with IBM Communications Server

Spam Decoding Tools

Research Software

Voice over IP telephony (software telephone) openwengo

What gives with the Wikipedia mob? I know that they have gotten an (undeserved, I hope) bad rap for altering pages with wild abandon. However, I really did not expect to see what just happened.

I had a client to whom I was sending a copy of my company's development methodology. Unfortunately, with more than a million files on the companies network here, I can't find the doc in question. However, I did find the nice image that accompanied the document.

I thought that I would do a 'reality check' against articles on software development at Wikipedia and I did not find quite what I was expecting. If our (relatively simple) take on what is actually done on software projects is not represented there, it makes me wonder.

FWIW, the diagram merely shows the flowchart (arrows, docs, decision diamonds, 'things', etc) of the following development cycle:

    • Identify needs/opportunities
    • Create requirements
    • System design
    • String (sub-system) design.
  3. CODE
    • Unit Design, build and test
    • String (multiple units) Design, build and test.
  4. BUILD
    • String Assembly
    • Full System Build
  5. TEST
    • System Test (all works together)
    • User acceptance Test (System is acceptable to client)
    • Release to Pilot
    • Release to production.

What is nice about the diagram is that it shows in a tidy way how these stages flow into one another both forward and back and shows the entire life-cycle from conception to system retirement. It also shows how (and why) it's possible (as happens) that a system could make it all the way to release into production and then almost immediately retired.

I wonder: how many other people like myself have been discouraged by such actions at Wikipedia? My time is limited and that article may now not see the light of day. That's a shame.

I would link to the offending pages, but unfortunately that appears to be considered bad practice at Wikipedia and might even get me banned (oh my)!

I see that Advogato is in danger of going away.

Note that I would have posted a reply, but someone has changed the level of my certification to 'observer' and I can't post. I am not sure what they have in mind in terms of gauging how many people are interested if they have taken away the ability to indicate opinions. I am sure they have their reasons, but I confess to some annoyance about this.

FWIW -- I would prefer that Advogato stay and I do not see Blogs as an alternative for the way I use this resource.

It would be a shame if Advogato went away. I do not look here as frequently as I used to, but I do still check from time to time. It is one of the few places where you can find something worth reading without wading through all kinds of nonsense.

I also find this a very mannerly community. I like that.

It is rather a shameful secret, but I really liked this forum to publish an article when the need struck me. I knew that the article would get some eyeballs and those eyeballs would be ones I expected would understand what I had to say. I took a little care before posting, but did not torture myself with the level of care I would before a normal publication. That was good (sometimes).

Best wishes to everyone in this community. If anyone needs to find me, they can just 'Google' my name or even my handle and they will likely find me soon enough.

Ironically, I was just getting prepared to publish some things and would likely have announced them here. I am at a loss as to what would be a similar venue. I did not check them all out, but places like Blog Farms, etc. are not nearly the same (for me) as this is. I have plenty of my own sites and servers if I just want to blather...

Again, my best wishes to everyone.

13 Mar 2005 (updated 13 Mar 2005 at 05:17 UTC) »

Jiminy Crickets! I see it has been a while.

I posted a bunch of code for an md5 hashing utility on the front page. Hope that does not lead to a host of flames...

I think the thing is newsworthy, because a whole bunch of people either are or should be swapping out any SHA1 code they are using, pronto. I had to. Problem was, there was simply no code that I could work with out there.

I rant on this all the time, but I simply must harp on it again: some of that stuff does not work. People do something rather difficult, like the md5 hashing code and then just seem to run out of gas. They do not test/package/test and they seem unable to comprehend that other people's development environments may be different.

Now, on the topic of 'different environments', I am sure I will be flamed because I took all the 'endian' junk out of the md5 code. Sue me. 99.999% of all the machines that are likely to use my md5 utility/library code don't need that junk cluttering the code. It's easy to find elsewhere and slap back in if you need it. Meantime, with all the crap stripped out, this code stands a good chance of compiling without any tweaks on just about any box out there.

Anyway, as aggravating as this exercise was, it is nice to have something reasonably publishable from all the mountains of code I have written.

Oh -- BTW -- I am out of town for a while and may not even look at the web. Don't go nuts if you don't see a response from me.

8 older entries...


DeepNorth certified others as follows:

  • DeepNorth certified RichardA as Journeyer

Others have certified DeepNorth as follows:

  • davb certified DeepNorth as Master
  • trukfixer certified DeepNorth as Master
  • mdupont certified DeepNorth as Journeyer
  • snim2 certified DeepNorth as Journeyer
  • grant certified DeepNorth as Apprentice
  • chalst certified DeepNorth as Journeyer
  • alexzing certified DeepNorth as Apprentice
  • itadmin certified DeepNorth as Apprentice
  • badvogato certified DeepNorth as Master
  • slamb certified DeepNorth as Apprentice
  • lkcl certified DeepNorth as Apprentice
  • dangermaus certified DeepNorth as Master

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page