Time To Abolish Software Patents? Hell yes!

SlashDot has an interesting article Time To Abolish Software Patents?.  I completely agree with this.   Many of the patents, well those you read about, are exceedingly simplistic, stupid and rather obvious.  And they’ve been done before.  The system is being totally abused by lawyers and thugs.

I’ve been following some of the idiocy at the Patent Troll Trackers blog.

There is very little that is truly innovative in software.  Incremental sure.   Interesting sure.  Truly innovative?  I think not.

“ESP Estimates Software Patent Litigation Costs U.S. Companies Spend $30.4 Billion* Annually”  Foul-smelling bovine byproduct.  The only people who make money are the frigging lawyers.  And that’s enough of a reason to me.

Copyright?  That should be enforced. 

The Travel Day from Hell

The Travel Day from Hell – Wow, what a story.

An interesting tidbit there.  If something very strange is going on ensure the driver takes your bags out of the trunk before you exit the cab.   Otherwise they leave with you standing there and take your bags.  Of course if you are concerned for your life …

My most interesting ride was a cab driver in Yellowknife, NWT who got a speeding ticket while I was in the car.   This was just after have gone through a stop sign at a considerable speed.  The RCMP member asked if I was in a hurry.  Presumably he would’ve kept the drivers license and have the driver meet him at the station after dropping me off.

I few months later I was reading in the local newspaper about how city council put in a bylaw about how many points a taxi driver could have to be driving.  They mentioned one particular driver who was almost suspended on points.   “Aha” I thinks.

Multi Row Tab control not

A number of fellow Access MVPs disagreed with the UI of a multi row tab control.  John Mishefske pointed out a excellent page at the Interface Hall of Shame – Tabbed Dialogs.    Of course *MY* multi row tab would not look anywhere near as ugly as some of those examples.  Yeah, right.

I’ve been thinking on that today and am very much inclined to agree with them.  I’m seriously considering using a list box as per the example a short way down the above page.

One suggestion was to use a Treeview control.  However I’m not going to distribute any kind of OCX given the version troubles that are possible.   At least not for something so minor as one form.

Performance will suffer slightly though as the user switches from one subform to the next and then back and forth as the subform would be refreshed each time.

That is I’m currently only filling the subform record source when the user clicks on the tab.  This really speeds up the initial form open.   So the first time on a given tab it will be slow.  Currently if they switch back to the tab performance will be fast as the data has already been fetched.

If I switch to a list box then performance will be slow each time the user chooses a different subform as it will be loaded each time. Unless I have a whole bunch of hidden subforms.  It’ll be at least a few weeks before I add enough tabs to that form so I have lots of time to think about what option I want to choose.

Multi Row Tab control

In my Granite Fleet Manager I’m soon going to be adding enough tabs to the following form that I’ll run out of space.   I didn’t like the looks of the default behavior.


TabsSingleRow


So I asked in the private MVP Access newsgroup how you could get multi line tabs?  Ken Snell was the first to reply that there is a Multi Row property on the tab control.  So the following is how it will look.


TabsMultiRow


Duh!!!!!

Minor unexpected behavior in VBA DIR function

This is exceedingly minor.  However the following example brought two different results.


?Dir(“Q:\1 access\Fleet Mgmt\*.key”)
PD.keyzzzz
?Dir(“Q:\1 access\Fleet Mgmt\pd.key”)
<nothing>


Background.  For my “shrink wrap” application, the Granite Fleet Manager, I email the user a small encrypted license key file with a KEY extension.  This file contains information such as the organization name, the maximum number of units they are licensed for in the app and other similar data.


If a *.key file is found in the BE MDB folder then I pull in the data.  If not found then it’s a demo system.  (If more than one *.key file found I display a message and exit.  Should never happen of course.)


In this case I just renamed the file to have zzz after the “.key” extension just to test some logic.  And DIR still found the file.  Of course putting any character after the . and before “key” such as pd.zkeyzzz gave the expected result of nothing.


Now that function has been there for about nine years.  These days I would’ve used the FindFirstFile API call.  So is it worth changing?


I’m not going to fix it right away because I might introduce more errors in the code. Highly unlikely but possible. And the chances of anyone ever encountering this problem are very, very small.


I’ll put it in my To Do Tracking database but I may never get to it.  I did a quick search through the code and I do use DIR in a few other places.  But they look for all the files or a specific file name.  No cases using the wildcard *


P.S.  Yes, the Fleet Management web pages are rather sparse and ugly. I’m working on it.


Edited 2008-10-01 to update the Granite Fleet Manager URL

Fetching the reference description

I’ve always been irritated at how you can’t get at the user friendly reference description as displayed in the Access VBA References screen.

  VBAReferences

When you look at the properties of the reference object you can’t see the user friendly name you see on the above screen. 

Sub DebugPrintReferences()

Dim ref As Reference
    For Each ref In Access.References
        Debug.Print ref.Name & ” ” & _
            IIf(ref.IsBroken, “Broken”, “”) & _
            ref.Major & “.” & ref.Minor & ” ” & _
            ref.FullPath
    Next ref

End Sub

The above code will only show you:

VBA 4.0 C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6.DLL
Access 9.0 C:\Program Files\Microsoft Office 2003\OFFICE11\msacc.olb
DAO 5.0 C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll
stdole 2.0 C:\WINDOWS\system32\stdole2.tlb

Not very user friendly when you’re trying to post to a newsgroup telling someone what needs to be removed or added.

However fellow Access MVP Thomas Möller suggested adding a reference to Microsoft Visual Basic for Applications Extensibility 5.3 and the following code. (Slightly modified)

Sub DebugPrintReferencesIDE()

‘ For the refIDE to work a reference must be set to Microsoft Visual Basic for
‘       Applications Extensibility 5.3
Dim refIDE As VBIDE.Reference

    For Each refIDE In Access.Application.VBE.ActiveVBProject.References
        Debug.Print refIDE.Description & ” ” & _
            IIf(refIDE.IsBroken, “Broken”, “”) & vbCrLf & _
            ”     ” & refIDE.Name & ” ” & refIDE.Major & “.” & refIDE.Minor & ” ” & refIDE.FullPath
    Next refIDE

End Sub

which gives you the following:

Visual Basic For Applications
     VBA 4.0 C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6.DLL
Microsoft Access 11.0 Object Library
     Access 9.0 C:\Program Files\Microsoft Office 2003\OFFICE11\msacc.olb
Microsoft DAO 3.6 Object Library
     DAO 5.0 C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll
OLE Automation
     stdole 2.0 C:\WINDOWS\system32\stdole2.tlb
Microsoft Visual Basic for Applications Extensibility 5.3
     VBIDE 5.3 C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB

Windows Live SkyDrive – 5 Gb of free storage

Windows Live SkyDrive   5 Gb of free storage.  I could’ve used this a few weeks ago for a client to send me some 5 and 10 Mb zipped files.  I’m sure there are other services like this but in the above example I just had the client email me the zipped files so that worked.

Mind you, being the paranoid type, I’d put a passphrase on zipped files I was going to place on there.

You can make files available to specific folks on your Instant Messenger (or whatever it’s called now) or key in an email address.