Older blog entries for DeepNorth (starting at number 8)

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.

Cleaning up a whole bunch of stuff on my network and in archival storage. I am having major troubles converting all of my data, sources, documents, etc. to modern formats. Some of this stuff goes back to 1984 and earlier. Naturally, I am ditching tons of stuff. I am pretty much tossing all of my some thousand or so diskettes. Some of the disks have become unreadable after a decade or more of aging. Stuff that was once dreadfully important, like sources for various commercial products are being tossed because it's not worth the effort to sort through it all. Same goes for the million or so files on hard disks.

If I come across stuff like the below that can just be cut and pasted onto the net, I'll try to do so.

Here is a piece of code that might be useful to someone googling for credit card validation. Enjoy.

'Credit Card Validation Routine (Visual Basic)
'Copyright (c) Bob Trower, 2001
'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 '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 Credit Card Number is valid, the final sum
'will be an even multiple of ten ((x mod 10) = 0 ).
Function IsValidCCNumber(CCNumber As String) As Integer
   Dim CheckSum As Integer
   Dim ThisDigit As Integer
   Dim i As Integer
      ' Note: Order of Steps is important...
   IsValidCCNumber = False ' Redundant in VB, but good practice
   If Len(CCNumber) > 10 Then ' Known Card numbers are more than 10 digits long
       CheckSum = Val(Mid(CCNumber, Len(CCNumber), 1)) 'Last Digit is CheckSum Digit
       For i = Len(CCNumber) - 1 To 1 Step -2
           ThisDigit = Val(Mid(CCNumber, i, 1)) * 2 ' Double these digits
           CheckSum = CheckSum + (ThisDigit \ 10) + (ThisDigit Mod 10) ' Add the sum of the resulting digits
       For i = Len(CCNumber) - 2 To 1 Step -2
           CheckSum = CheckSum + Val(Mid(CCNumber, i, 1)) ' Add these digits
       If CheckSum Mod 10 = 0 Then ' Resulting number should be an even multiple of 10
           IsValidCCNumber = True
       End If
   End If
End Function
23 Aug 2004 (updated 9 Oct 2004 at 17:54 UTC) »

This post is really about personal stuff. Read if you dare, but it's pretty boring unless you know me personally or are mutually affected by various problems I've had of late.

A lot of my/our troubles would have had much less impact had the tech economy not imploded. It must come back and continue to grow, but the timing of it and the nature of the comeback may not help North Americans that much. A lot of my business has been with Telecomms and related enterprises and we know how that has been.

We are many orders of magnitude of bandwidth below where we all need to be, so this has to make a strong comeback at some point. However, recovery has been spotty so far.

Some friends have had various troubles of late including near death experiences and moving half way across the world. Family have also been having health problems. My goodness. If anyone of you are reading this, my best wishes to you.

Many things have been just a drag on me and my little company this past year or so. I was really hoping to get some time to publish some of my stuff on Sourceforge, but have just been interrupted by one thing or another. Just got back from a trip to Europe for 30 days. It was ok, but really for the wife and kids. I would have liked to take the time to just put my head down and write code, but family comes first these days (as it should).

Like if anybody cares, friends are starting a commercial music site http://www.tzome.com
I am wishing them luck and they have a great idea. Despite note about commercial stuff below, I hold out hope that someone ethical can actually make money in cyberspace. We shall see.

Note that nobody asked about the radix sort, so I have still not prepped this for publication. I am so short on 'hobby time'... This is unfortunate, since that seems to be the stuff that lasts and speaks the best about a person. (Sighs). All of this website activity over the years has been a sink for time/money. I believe in it, but it still seems that only the unscrupulous (sp?) make a financial go of things in cyberspace.

Have struggled with downed sites due to a failed failover (long story) and an unscrupulous primary hosting operation. Oh my.

Sites affected:


Had Advogato not gone down for a while itself, I would have beaten myself up over this, even though all reasonable precautions were taken.

Unlike Advogato, there are a lot of sites affected here and they had more than one backup strategy since they vary in age. It has been a real challenge to restore all of these sites.

Clients sites whose backups we maintain went up quickly once we switched servers. However, a couple of clients maintained their own backups and one is still recovering (very long story here).

We, of course, are the shoemaker's children. Our own sites are the last to be dealt with and we are still in the midst of restoring these. Things could be worse, but disaster-recovery-wise, this was a worst-case scenario.

Looking on the bright side, though, my strategy of paranoid multiple systems and backups paid off. We at least have been able to recover.

Have posted some additional material about Migrating From Microsoft"

It is astonishingly cold here today -- approaching the point where Celsius == Farenheit. No bother for me. I am wearing "performance underwear".

Am about to start some prototype coding for a 'vector translation' engine pursuant to research into 'advanced data packaging' -- whatever that means.

Mulling over the idea of preparing a GPL'ed version of a 'raw radix' sort in ANSI C. For short records of -non-degenerate' data it is the fasted sort I have tested -- much faster than quicksort on large files. Would anybody care?

19 Aug 2003 (updated 19 Aug 2003 at 17:16 UTC) »

Have posted another article. Things really do move slowly here. If I wanted to and had the time, I could post the majority of articles on this site.

I note that diary entries take place fairly frequently, but I wonder who reads them. I have scanned a few and it seems a totally mixed bag -- not worth wading through. Some of the stuff could/should have been posted as articles and some of the stuff could/should have been better left unsaid. Maybe this entry is one of the latter :)

I'm wondering now if things are not slower here than they have been in the past.

Even though I've never joined before, I've been here before and it seems to me it was more active. What has happened, I wonder? I never went in for the mayhem that is slashdot, but they are active -- I'll give them that.

I like the minimalism of the site, but I wonder if that has anything to do with the apparent lack of interest. My sites are similarly (well, not quite) minimalist and we have been criticised for not being 'jazzy enough'. I would have thought a lot of serious hackers would go for this sort of lean content driven stuff. However, there seems to be a lack of interest, going by the number of articles and replies.

OTH -- maybe less is more with respect to the traffic here. I noticed that the replies to one of my articles here were quite thoughtful. Maybe a lower amount of high quality traffic is best. I will ponder this.

Well. After grousing for a grand total of about 48 hours I was certified as a 'Journeyer'. That's ok by me. I think with respect to the standards here I AM a Journeyer. Imagine that. Thanks to the guys that jumped in to certify me.

I got to post my reply about the voting stuff and due to breaking news, I even had an excuse to post an article about it. Mmmmm.

I also posted an article about making forge-proof bills from plain paper. I would love it if some geek actually did the legwork and printed a few. <rant>

Am currently slugging away with code for my websites. It is just drudgery right now as I attempt to 'beta-ize' hacks for session management, table management, etc. PHP is a thing of great beauty, but it does not really have a client-side counter-part. I am trying my best to minimize the java code needed on the client, but it keeps growing anyway. Why can't the browser guys get together and make SIMPLE standards that work everywhere and do what you actually need. Do you think the stinking browser could send a little RELEVANT information to the server???

I am currently trying to work my way around a nasty hack to resize the page without destroying the automatic 'printability' of my pages. It's a joke.

Realistically speaking, a modern page should be a document that reformats for different media like screen and print. I have CSS that deals with some of this, but obvious document stuff is missing from the HTML specs and the browsers implement these fine points differently.

The code I am currently working on is supposed to allow you to put up a set of presentation pages that can be viewed as a presentation but then go through a few filters to produce a reasonable printed document. Why do I have to code the GD filters??? This should be standard out of the box stuff, but instead the people working on this stuff have gone off into outerspace producing plugins for everything under the sun and extending things like java to the point where the browser is becoming an operating system. Meantime, some of the obvious stuff (like pagination in a printed document) is missing.

This diary is a case in point. There is no way to specify that a new body of HTML code has started or ended. That means that all these editors have to restrict the HTML tags you can use. Blah!

As a programmer of long standing, I can tell you the reason that things are like this: Programmer's do not use their own code as extensively as users do. If they did, they would fix the bugs in the vanilla stuff instead of constantly hacking in new features. Mea Culpa as well, but still... As a user, I object. </rant>

Things move slowly here at advogato ... Am I really in cyberspace?

Someone (Dave Bauer) has kindly read my diary entry and added a certification. He has certified me as 'master', but I have a feeling that this may have ended up having no effect...

I read the trust metric stuff and now wonder if, given the nature of the traffic on the site, it might be impossible to get proper certs unless you are actually known to the individuals who happen to look at who is coming in.

Maybe if they knew I had a hand in:

The world's biggest omelette!

I was called in as they were going for the record to fix the computer that was supposed to be webcasting but had stopped. I just managed to fix it in time so they were able to broadcast the declaration that they had finished the omelette.

Since I do web stuff and they had not thought to do any type of permanent memorial, I used a company 'shelf site' we had saved for charity to put up the news. You can see it here:


I have had a pretty good career and some personal luck over the years. I feel a bit sheepish about not having given enough back, but I have given something.

Come to think of it, I wrote a program for these guys to operate a charity auction thing. I should GPL the thing and put it up at PureWish...

Still trying to think of an ethical and polite way to break into the 'trust web' here.

Jiminy Crickets!

I was(am) a Master Programmer and was both the main designer of the Guild's point system for certification and the Code of Ethics

Here's my certificate as a Master Programmer (M.Prog):


Here's another bit of GPL'ed code from my 'Crypt' Data Packaging project:


I like the idea that there is a certification procedure here, but a little peevish that I have to constantly re-prove myself everywhere I go. Sigh. It's the lot of a programmer -- it's always 'what have you done lately'...

I hope that anyone reading this will check my credentials and certify me ASAP

I came here, because I would like to comment on the electronic voting article. People there are saying that there is no way to provide a Convenient, Secure, Auditable, Private and Transparent electronic voting system. At least as far as Canada is concerned, I beg to differ. We present a scheme here: HushVote Security Overview

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!