Library funding

April 14th, 2010

Today I visited a county library acquisitions department with bare concrete pillars (one of which had a notice “to demolish” chalked on it!), desks from the seventies, a carpet from the sixties, and computer equipment from the early nineties (woooh, a mouse with a ball in it!). Today I also finally started to read The Modernisation of Public Libraries – a Policy Statement. I didn’t get far before I wanted to start writing this…

Although there is no doubt that public libraries have received large chunks (£120m) of funding from National Lottery Funds, the thing that has been lacking is the ongoing funding. It’s all very well buying a bunch of computers 5-10 years a go, but now that those computers are wearing out, where is the commitment to replenish every 2 to 3 years?  For those buildings that have been ‘made over’ with £80m Big Lottery Funds, in 10 years they will need to be ‘made over’ again as long-term commitment to fund the public libraries seems to be absent from Local Council thinking. The library authority I visited today has just bought a shiny new library management system, and within 2 weeks of going live had to close a whole branch library. They now have three libraries.

The policy statement goes on to say:

But, as every good librarian knows, public libraries are not about sitting back and passively waiting for people to borrow your books – they are about active engagement with the community, making links to other public services, and responding to the policy imperatives of the day.

My impression of public libraries, is that they spend all their time chasing after involvement in whichever national and local ‘policy imperatives’ are flavour of the month. They are all short term plans. What ever happened to framework for the future? did that achieve anything? or just lead into a fresh round of “well that would be nice, but we are being job evaluated; restructured; forced to make ‘efficiency savings’, so won’t actually have time to think long-term because my job won’t be here in two months time”.

Whatever happened to keeping a good range of books on a wide range of subjects? I have first hand experience of finding a perfectly good book being withdrawn from stock because it had not issued in almost a year.  When a gentleman came to the enquiry desk and asked for it I was happy to tell him that although we had withdrawn it, I knew where it had gone, because I had rescued it and sent it to another library where I knew it would be valued. My point? Well, If we discarded every book that started to look tatty or had not been issued for years, there would be nothing for future generations to use. Today’s tatty book, is tomorrows antiquarian bookseller’s dream!

rant over… for now…

An Easter Birdy

April 3rd, 2010

Well it was time.

After about 2000 miles on the Dahon Vitesse D7, it was time to get a new bike. The Dahon had it’s fair share of problems. The frame split where the seat post frame tube met the cross tube – luckily within warranty, so a new frame was fitted. The wheels on the Dahon where very poor.  On average a spoke broke on the rear wheel every three to four weeks.  Eventually I had the rear wheel rebuilt with new spokes.

Of course there was all the usual stuff with chains wearing and the like… but that is normal for a bike that does 8 miles a day four day’s a week. So the Dahon is being retired to ’second bike’ for use in emergencies.

So, what about the new bike?

I am now a proud owner of a Birdy Touring bike.

This bike has 24 gears, nicely distributed from very low (hill climbing will be so much easier!) to pretty high. One of the things that I found with the Dahon was that there was not enough high end in the gears, and I was quickly at top speed, with a feeling that I could have gone further. The new bike has by contrast a massive high end in the gears. I topped 42 mph on the flat – with a tail wind!

It has full suspension using a combination of elastomer (rear) and spring/elastomer (front). And on a canal tow-path trip which varied from very uneven brick to muddy pools, it coped well.

It is fully kitted out with mudguards and Pannier racks (front and back).

And of course it folds.

Outlook to Skype SMS

March 11th, 2010

I wanted to know when a process on a customer’s server had failed. In fact I wanted it to wake me up in the middle of the night so that I could fix it.

About the only usable outbound communication supported by the server is email, but my phone is not email capable (well it is, but not for work emails!).

So a colleague mentioned using MSN chat or Skype chat to send comments, and that set me wondering…

Skype has a COM library which can be used to interface with the Skype application. (A reinstall of Skype with the Extras Manager option ticked was needed to get the library installed.) The Skype4COM library allows you to send SMS. Outlook of course allows you to apply rules to incoming mail messages, and one of these allows you to run some code in a VBA module (the run a script option).

So put it all together and we have:

  1. A script on the customer’s server will monitor another script’s progress. If it detects a particular condition it will generate an email sent to my work email account.
  2. Outlook has a rule to look for specific text in the email subject (for example “ERROR”).  If it detects a suitable email, it will run a piece of VBA.
  3. The VBA will call skype and send the SMS message

Installation of outlook VBA code

  1. Add the code below to an outlook module
  2. Add a reference to the Skype4COM object in the module.
  3. Create a button in outlook that is linked to the macro SendTestSMS
  4. Create a rule in outlook that searches your incoming mail and will ‘run a script’ if it finds something. the script to run is the SendSMSRule VBA macro.

Running the solution

  1. Have outlook running and make sure that macros are enabled.
  2. Click the button you created in step 4 above and enter your phone number. The VBA app will remember your phone number, but you will want to send a test SMS, because you will probably have to ‘allow’ outlook to access Skype the first time after starting outlook.  Skype will ask you for confirmation.
  3. If Skype is not running, it will be started for you by the VBA code.
  4. Have some credit in Skype for sending sms!
  5. Wait for email’s to arrive.

The VBA Code

Public Sub SendTestSMS()
    Dim strMsg As String
    Dim strContact As String
    Dim strPhoneNumber As String

    strPhoneNumber = GetSetting("SendSkypeSMS", "PhoneNumber", "Data", "")

    strContact = InputBox("Make sure you allow Outlook to use Skype when prompted in Skype." & vbCrLf & _
                            "You will probably have to do this for every session" & vbCrLf & _
                            "Enter your mobile number (+44123456789)", "Enter Phone Number", strPhoneNumber)

    SaveSetting "SendSkypeSMS", "PhoneNumber", "Data", strContact

    If Len(strContact) = 0 Then
        Exit Sub
    End If

    strMsg = "A test message from Outlook"
    subSendSMS strContact, strMsg

    strPhoneNumber = GetSetting("SendSkypeSMS", "PhoneNumber", "Data", "")
    MsgBox "Sent a text to: " & strPhoneNumber
    SaveSetting "SendSkypeSMS", "PhoneNumber", "Data", strPhoneNumber

End Sub

Public Sub SendSMSRule(Item As Outlook.MailItem) 'Outlook will give us the mail item that matched the rule
    Dim strPhoneNumber As String

    strPhoneNumber = GetSetting("SendSkypeSMS", "PhoneNumber", "Data")

    If strPhoneNumber = "" Then
        MsgBox "You have to send a test SMS message so that I know what your phone number is!", vbCritical
        Exit Sub
    End If

    subSendSMS strPhoneNumber, Item.Subject

End Sub

Private Sub subSendSMS(strRecipients As String, strMessage As String)
    Dim objSkype        As SKYPE4COMLib.Skype
    Dim objSMS          As SKYPE4COMLib.SmsMessage

    Set objSkype = New SKYPE4COMLib.Skype

    If Not objSkype.Client.IsRunning Then
        objSkype.Client.Start
    End If

    objSkype.Attach , True

    Set objSMS = objSkype.CreateSms(smsMessageTypeOutgoing, strRecipients)

    With objSMS
        .Body = strMessage
        .Send
    End With

    objSkype.Convert.SmsMessageStatusToText (objaStatus)

KillObjects:
    Set objSMS = Nothing
    Set objSkype = Nothing
End Sub