Many Pies

Many Pies

Friday, December 12, 2008

Displaying feeds using javascript

I've been very pleased to find a site which gives you scripts for displaying feeds using javascript. They even let you run the scripts from their own site. I wanted to tweak them so I copied them and run them off our own site. You've got quite a few options when you call the scripts, but I wanted to do a couple more tweaks:
  • Images with relative URLs in the feed (though not invalid, but not advised) needed the domain adding to the start.
  • Displaying the first paragraph of the feed, as the feed is normally full text.
The code is very clear and those were fairly easy changes to drop in.

Thursday, December 11, 2008

New NetCommunity donation pages

We have moved our main donation pages over to NetCommunity. They are all linked from our donate to a project page. The Blackbaud web designer did a good job of reproducing the layout from our site and it was fairly straightforward to create more pages with the different branding for the different campaigns on our site.

Now we've replaced existing pages, it's time to do some new stuff...

Friday, November 21, 2008

Portable audio Bible players

I've written about the megavoice before. Rob Baker has a round up of three portable audio Bible players. I saw the Saber a couple of days ago. It's very chunky. It's great to see some good solutions for getting the Bible as spoken word out away from main electricity.

Raiser's Edge sign


On a recent trip to our Belfast office I came across a Raiser's Edge, sorry Razors Edge shop sign.

Friday, November 14, 2008

Musings on "View Source"

It's not an original thought that View Source has greatly enhanced the beauty and usefulness of the web. I was thinking on it today because a little trick I came across
#nav a:active, #nav
a.selected {
background-position:0 -64px;
}


What we have is a button which when you hover over it switches to display a different part of the button picture, which in this case displays the button text in a different colour. You can see it at: wycliffe.org.uk.

With the print medium to produce stuff you need decent software like Quark Express, which costs, as well as the money to print in colour, on nice paper. So not many people produce magazines and books. (I know we have the rise of DTP, but what that's done for the print medium is another discussion...)

Imagine if the web were the same - you had to buy Dreamweaver or equivalent to produce websites; you had to pay a significant ongoing cost to host your site. There would be no blogs, no personal websites on your free webspace from your ISP, no small company, small charity/school/church websites. A very different place.

Now imagine if you had View Source for print media. Imagine if it were easy to nick the layout used by Hello magazine, say, and put your own photos and text in. Imagine if you could print a run of a 100 of them for the price of a burger. You could do a special magazine for a wedding. Pamphlets and fanzines would be all over the place. Interesting to let your mind wander...

Thursday, November 13, 2008

Busy Background Images

I thought busy background images were pretty dead until I came across this page with lots of juicy information about the Google Maps API.

And then as blogged about just now, boagworld has a nice bit of grass on it. Much easier on the eye.

Web design treasure trove

Yesterday I was told about boagworld, a veritable treasure trove of web design stuff. A podcast with stuff to read on the pages, a friendly forum. What more can you want? As the BBC say, other web design forums exist, but this is the first I've come across (because I haven't been looking) and it looks very useful.

Tuesday, October 28, 2008

Clouds everywhere

Clouds are the new big thing, and like most rising technology concepts that you can give a single word or acronym to, its not something you can some up in a single sentence. This post is really to help me get my head around latest developments as you'll find better expert commentary elsewhere.

VMware have vCloud which sounds like you can take a virtual image and chuck it up into their cloud.

When I came across this the other day I noticed that Rackspace were on their list of Hosting Services. However when I went to the Rackspace website I found no mention of it.

Then last week the Rackspace Cloud Event happened. This seems to be plugging their existing Mosso cloud service, and their purchase of Jungledisk and Slicehost. I am familiar with Slicehost when I was investigating virtual server providers. They seem to have a good reputation and it looks like this is a good purchase for both parties.

Jungledisk runs on Amazon's S3 currently, and Amazon can now offer Windows machines under EC2, so Microsoft are getting into this.

And now we have Azure which I find it hard to understand, but includes lots of cloud stuff for Microsoft technologies like .NET and SQLServer. It encompasses the previous Mesh stuff, so it looks like a pretty big pile of technologies. "Stack" sounds too organised. It would be nice to try it out, but the SDK is Vista/Server 2008 only. It's ironic that although they support lots of open stuff like SOAP and REST they insist on the latest version of their own platform.

Wednesday, October 22, 2008

Web 2.0 in Wycliffe UK

There's a bit in the Jungle Book film which I saw recently where the vultures are standing around (or perching around maybe) and one of them keeps saying "What are we going to do then?"

It feels a bit like that in the world of charities/non-profits with Web 2.0. There are plenty of people like Amy Sample Ward and Beth Kanter giving lots of advice.

We've just had a meeting where we asked, "what are we going to do then?". Most of what we currently do you can see at Wycliffe Live. This isn't the place to reproduce the full action list but I thought you may be interested that we decided:
  • Facebook groups don't give us much
  • Facebook ads are worth trying out
  • Web 2.0/social networking may be a good way that we can help the people who work for us "engage" (horrible but useful word) with their supporters.

Friday, October 17, 2008

All my own work

I have wrestled with Blackbaud NetCommunity and produced my first organisational website. Previously I have just tweaked other people's work. So here it is:

givejesuswords.org

The donations facility needs some intensive testing with real credit card data :-)

Update: Well not really all my own work. I didn't do the graphics, or the design, or write the words, I just implemented it. And one of my colleagues tweaked it a bit. But apart from that...

Wednesday, October 15, 2008

NetCommunity gift aid label

Little tip: if the Gift Aid label on your donation form is too low, then define the custom style vaTop in your stylesheet:

.vaTop
{
vertical-align: top;
}

Then it will go up to where you want it.

Wednesday, October 08, 2008

Web page construction done properly

I've been creating some web pages from scratch, which is something I haven't done in a while. They are for our new on-line donations server, which isn't live yet. I created pages for approval in Microsoft Visual Web Developer 2005 Express edition, and then doing them for real in Blackbaud's NetCommunity.

Usually with stuff like this I just do the minimum to get it done... and this time is no exception. However when I do further work I'm determined to do it properly. Properly means making sure that my (X)HTML is valid, that I plan before jumping in, that I understand why what I did works the way it does, rather than tweaking until it looks good, and other worthwhile things. On the subject of valid HTML, I ran the home page of some, er, websites that belong to a friend of mine, through the W3C validator and I'm embarrassed by the results. Fortunately I'm not responsible for our, er, my friend's web pages.

Friday, September 26, 2008

Wycliffe Live

On of my colleagues has done some good work on a new page on our website called Wycliffe Live. It brings various Web2.0 things altogether in one place.

I can take no credit apart from a tiny bit of technical support.

Thursday, August 07, 2008

Does software get special treatment for old age



Photo by horizon (cc) some rights reserved.

I'm going back over some software and making sure it has proper test procedures and test cases. I've got something that's run smoothly every month for eight years, and has coped with a variety of input data without falling over. Should it have exemption from testing when it's been working fine for so long? I think so.

Wednesday, August 06, 2008

Second facebook app

I've done a second facebook app. This one reads updates from the wycliffeuk twitter user and displays them in a profile box. Behind the scenes it updates all the users profiles every hour so that the updates are fresh.

Credit goes to Manas Tungare for his script which gives you the nice "23 minutes ago" or "about 5 hours ago" text, and David Billingham for his twitter PHP api.

Thursday, July 31, 2008

Changing Phone Types in Raiser's Edge, part 2

Further to my post on changing Phone Types in Raiser's Edge:
I found that Table Cleanup would fail even if phone types weren't duplicated for a given address. So I ended up changing them with various global changes, or creating an import file, changing and reimporting.

Further to this:
I found that Table Cleanup would fail even if phone types weren't duplicated for a given address. So I ended up changing them with various global changes, or creating an import file, changing and reimporting.

I also had problems with queries not finding duplicates. If I looked for
Phone Type one of "Old email 1", "Old email2"

it would fail to find some duplicates. I had to add
OR Phone Type one of "Old email 2", "Old email1"

i.e. put them in a different order

Wednesday, July 30, 2008

Messy data

I'm in the middle of a project to take data from excel spreadsheets and word documents and get them into a database. As you might expect the data is in a bit of a mess. By mess, I mean that it doesn't obey database rules.

(As an aside I have heard Lotus Notes rejected because it's underlying database wasn't relational. The Lotus Notes format was nearer the way people create data than relational databases - missing values, repeated values.)

For example, one rule of databases is that there is only one copy of a thing. Unless you create a second copy (so that it's handy, but you know you're doing that, and if you need to change it you change it in both places).

In these spreadsheets we have people's names. Sometimes we have their name more than once. But are they the same person? If they are we should only have them in the database once, that's the rule. However we just can't tell.

One thing that makes this harder is that people's names are so slippery. They get abbreviated, they get misspelled. I tweeted today
paulmorriss: is wishing everyone had numbers rather than names. Computers could cope a lot better then.
Two people replied
I am not a number ... I am a free man!
Here's a new quote:
The price of freedom is eternal problems with names


In this particular case I'm trying to match a name in a spreadsheet column with a name included in the filename of a word document. E.g. database has
Joe Bloggs
filename has
Joe Bloggs report.doc

I get a match 70% of the time, which is quite good considering how many ways it could go wrong, e.g. database can have
Josephine (Jo) Bloggs
Joe Bloggs (useful comment)

Filenames can have
Jo report.doc
J. Bloggs report
Joe Blogs report

I could have done all the matching by hand, rather than trying to program it, but given the volume of data that would have been extremely tedious.

Friday, July 25, 2008

Getting going with BT's Web21C

In which our hero spends days downloading and fiddling with stuff just to send a text message.


I've spent a couple of days getting going with BT's Web21C SDK. I started on Windows trying to get Python going, switching to Ubuntu a couple of times in the middle. In the end I gave up, and switched to PHP on Ubuntu. The latter hardly took any time to get working. I had planned to document how I got the python working from my notes, but seeing as I didn't I've just kept my notes here in case it helps someone else. I couldn't believe the hoops I had to go through, modifying source code for python modules, installing lots and lots of software.


Using python:
download python tools
python setup.py
See EasyInstall
Watch where it says it's install it to then add to path:
set path=%path%;c:\program files\python\scripts

easy_install zsi

to run actual programmodify sample, remove previous sys.path.insert and put this before import service
sys.path.insert(0, '../build/lib/btsdk')
says it needs other stuff:

Download (non-light) SSL from http://www.slproweb.com/products/Win32OpenSSL.html
and MSVC runtime from
http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en

and then run certs-utility.bat

Gave up on WIndows ssl ( openssl ordinal 3288 error message), used Ubuntu.
Then did last step in Python, but need to install M2Crypto,

for which you need .net framework sdk 1.1
and swig (swig.org)
add swig dir to path
copy open ssl includes to python include

error: Setup script exited with error: Python was built with version 7.1 of Visual Studio, and extensions need to be built with the same version of the compiler
, but it isn't installed.
AARGH!
see http://peak.telecommunity.com/DevCenter/PackageNotes
create distutils.cfg file

command gcc failed

(diverted to linux but that failed because couldn't find pyconfig.h when trying to get ZSI installed - which works on windows)

Off to http://sourceware.org/cygwin/
guess that I just need the "developer" package, though could probably do with less as that took ages to install.
added c:\cygwin\bin to the path
replace regexp in distutils\version.py line 100 with this
version_re = re.compile(r'(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?',
re.VERBOSE)

copy openssl\lib\*.lib to python\scripts

gave up
found this:
(this may be helpful http://www.gooli.org/blog/building-m2crypto-on-windows/)
command given didn't work, but used this
python setup.py build_ext -I\localcopyofincludeDirectoryBecauseBuildingOnANetworkDriveAndYouCan'tSpecifyADifferent drive letter --openssl=c:\progra~1\openssl

python setup.py install (bdist_wininst thought it wasn't running on win32)



copy m2crypto-0.18.2\build\lib.cygwin-1.5.25-i686-2.5\m2crypto to site-packages under python
write program instead of running last line of setup batch file:
import pkg_resources
pkg_resources.require("zsi")
from btsdk import utility
utility.save_key_password()

cygwin complains about crypto dll even though it's there
add c:\cygwin\bin to path
complains about incompatible cygwin1.dll

Tuesday, July 22, 2008

Renaming phone types in Raiser's Edge - and finding queries that use them

When you integrate Raiser's Edge with Outlook you automatically get several new "phone" types such as: E-mail, E-mail 2, E-mail 3 and Business, Business 2, Business Fax.

If, like us, you already have some phone types then that's annoying. I've found that you can't change the mapping of outlook to RE types, so if you don't want too many phone types you have to convert your existing ones to the Outlook ones. Mapping them is a future suggestion. (Here's something I found recently: if something in the Blackbaud knowledgebase starts with "unable to..." then it will always list something that's a suggestion.)

Converting the phone types on the records is fairly straightforward using "Table Cleanup". The hard thing is (and this applies to any field, not just phone types) finding which queries use the types, so that you can modify them to use the Outlook types. However I've found a way:

First of all you need the code of the thing you're looking for. We have an email type "Email - private" and I want to convert that to "E-mail". So first of all you fire up the SQL query editor and put this in:
SELECT TABLEENTRIESID
FROM TABLEENTRIES
WHERE LONGDESCRIPTION = 'your description'
Make a note of that number - you'll need it.

Then you want to find all your queries that use that field. Now the phone type, like some other fields, can be used in two ways. You could have criteria such as
Phone type equal Email - private
or
Email - private Number not blank
Here's how to find the query names that use the field on the Criteria tab:
SELECT
Q2.NAME "QUERY NAME"
FROM QUERIES2 Q2,
QFILTERFIELDS QFF
left join QFILTERVALUES QFV on QFV.QFILTERFIELDSID = QFF.QFILTERFIELDSID
WHERE
QFF.QUERIESID = Q2.QUERIESID
and (instance = 40nnnn or numericvalue = nnnn)

I've used nnnn to represent the number you found out in the first query statement above. The 40nnnnfor us would be 403027. For some reason the instance has a 40 at the front.

Here's how to find query names that use the field on the output tab:
SELECT
Q2.NAME "QUERY NAME"
FROM
QSELECTFIELDS QSF,
QUERIES2 Q2
WHERE
QSF.QUERIESID = Q2.QUERIESID
and (instance = 40nnnn )
order by q2.name

Friday, July 18, 2008

The BT API and the cheeseshop

BT has an API. I like this sentence in the documentation:
If you look at the readme that comes with the Python SDK, you'll also notice a cascading dependency from ZSI to PyXML, which is available from the cheeseshop.

Wednesday, July 02, 2008

Cows and Colonialism

I recently heard a paper which had been delivered previously at the Global Connections Thinking Mission Forum

Here is a summary of the paper given by Rogelio Prieto (summarised by an unknown author), along with another one given by someone else. It's a sustained metaphor on how "the British church (standing here for all Western ‘sending’ countries and their mission agencies) is a COW".

It's best to read the summary, rather than hear my summary of the summary, but here are some quotes to get you interested. (Bear in mind these are the unknown author's quotes from the original talks.)
Indeed if you are in need and as long as you look from a distance, the British church looks very cow-like – big and fat and promising, with irresistibly tender eyes.
If you’re in need and find a cow, you don’t study it...you milk it.

Thursday, June 26, 2008

Good Samaritan video

We have a steady stream of volunteers here at the Wycliffe Centre, who stay for 6 months or so. The group that are mostly leaving this week (with help from other people) produced an up to date version of the Good Samaritan story.

Megavoice - solar powered Bible

I've written about the Megavoice before, and I had a look at one today.

It's made out of quite robust plastic, with the solar panels in the back. The controls are pretty straightforward - on/off, pause, and then three pairs of skip forward and back buttons. They are three different sizes and the bigger ones skip further (to the next chapter, say). It's a very useful way of getting the Bible in people's hands.

Thursday, June 19, 2008

Facebook first/third person confusion

Paul Morriss is finding that I'm confused which person to use in my Facebook status messages.

Wednesday, June 04, 2008

Looking up books in the Buckinghamshire Library Catalogue

I've written a bookmarklet that enables you to see if the book on the page you're looking at (at Amazon for example) is in a library in Buckinghamshire. I've adapted the work done by Jon Udell on his LibraryLookup page. To install it, drag the text below to your links toolbar.

LibraryLookup

Then when you're on a page which has an ISBN in the URL click on it and it will create a popup window with a search for that book in the Bucks libraries. If you want more guidance look at the videos on Jon's LibraryLookup page.

Monday, June 02, 2008

Facebook Apps on Google's App Engine

Since I wrote my first Facebook app I've been wondering if you could host it on Google's App Engine. Hosting at a low price is a problem - the free sites seem to be driven by ads, which don't get served up when you just run scripts. There's a lot of low price hosting, but you're tied into a contract.

Amazon's EC2 is pay as you go, but not cheap if you're just wanting to try stuff out. I came across this blog entry this morning in which someone seems to have got the two working together - Facebook Apps and Google's App Engine. Now I just need to understand it...

Friday, May 30, 2008

Web 2.0 and linguistics

An old blog entry, but an interesting one: Towards a social linguistics from Peter Austin at SOAS.

It says
One of our MA students, Paul Butcher, is currently writing his dissertation on application of Web 2.0 concepts to language documentation and support and I look forward to reading what he has to say when it is finished in September. Perhaps he can be persuaded to contribute to this blog when he's done.
but unfortunately I couldn't find any such blog entry.

Thursday, May 29, 2008

My facebook app

Here it is - Vision 2025 Countdown

First steps with a facebook app

I've been working on my first facebook app. Some things I've learnt:

1. A PHP script in cgi-bin behaves differently to one not there. I should have known that really, because I have a vague concept of the cgi stuff.

2. The documentation isn't that helpful when you're starting. The footprints tutorial app is pretty good as it goes, but seems to be using an older version of the api. The anatomy overview is quite good, but it doesn't tell you how to achieve what you want in each of those areas. One thing that's confusing is how the same code, called by Facebook under different circumstances, needs to do different things. There's some good information on the page Your callback page and you.

This helps to explain the uncommented code in the footprint application:
if (isset($_POST['to'])) {
$prints_id = (int)$_POST['to'];
$prints = do_step($user, $prints_id);
} else {
if (isset($_GET['to'])) {
$prints_id = (int)$_GET['to'];
} else {
$prints_id = $user;
}
$prints = get_prints($prints_id);
}

though I haven't quite worked out what it does, because I don't need to for my app.

3. Javascript behaves differently. I took some code involving the Date object and put it into facebook and it behaved differently. I had to fiddle around before I found out what would work and what didn't. For example.
new Date("December 31, 2025 00:00:00")
returned some other date.
I had to use
end_date = new Date(2025,11,31);
end_date.setHours(0,0,0);

The months start at 0. The hours, minutes, seconds are ignored on the constructor. All very strange.

4. It says this in the documentation, but its worth repeating - the stuff your app does in a profile is static and won't update when the profile page is loaded, so you have to find another way of doing it, e.g. on a click, or when the user interacts with the app.

5. If you're tweaking your app and you want to change the way it looks on everyone's profiles look at Fb:ref.
Good fun working on this though.

Friday, May 23, 2008

Aeroplane for Bible Translation with Artificial Intelligence

I've just come across an aeroplane which is going to be used for Bible Translation. It has built in artificial intelligence, so that it can even put tweets on twitter and sound like a human being.

Seriously though, this project is about building planes that use standard jet fuel, as opposed to the obsolete avgas that some of our current aircraft use.

Thursday, May 22, 2008

Hindrances to viral

One of the nuggets at the Institute of Fundraising conference was "deal with the reasons people don't want to talk about you", or something like that. Then via @jonshuler I came across Why Word of Mouth Doesn't Happen from Seth Godin. Interesting (something I can't think of the word for that probably begins with "co" and isn't "synchronicity").

Wednesday, May 21, 2008

Language maps

I chucked at idea at a colleague to add maps of language areas to one of our websites and he did some investigation and found this language maps site. Interesting...

Tuesday, May 20, 2008

My first google app engine creation

I've just created my first google app engine creation - a list of quotes. You type in a quote and then get a random one for the rest of the list.

Have a play (but play nicely).

Thursday, May 15, 2008

Institute of Fundraising IT Special Interest Group Conference

or the IOFITSIG conference.

(One aside: on the train up I noticed that hardly anyone had a tie on, just suits and open necked collared shirts. As I'm not a regular commuter I must have missed the memo saying that we don't have to wear a tie.)

I found this very stimulating. Not being a fundraiser I found the initial session from Alan Clayton of Cascaid (that's the agency, not the careers people) very interesting.

(Update: I missed out the Social Media Game. That link is about the session that I went to.)

I went to a session which had someone from Comic Relief. Obviously that's very big scale stuff, but some of it is applicable to even an organisation like us. For example, we've been getting people to run events recently.

"A Best Practice Framework for Managing a Big, Sophisticated Fundraising Information System" was about a Raiser's Edge implementation at Help the Aged. Much bigger than us, but good lessons to learn.

"Social Media feel the fear and do it anyway" gave me my to do list to take to the boss.

As an aside, it's interesting that the Fundraisers have their IT bit. The Charity Finance people have their IT bit. Where are the Charity IT people? There's CITRA, which is owned by several organisations, including those too. However their website has events from 2004 and 2005 on it, and nothing in the future, so that doesn't inspire confidence.

Monday, May 12, 2008

Game creator on Popfly

I tried out the new game creator on Microsoft's popfly site over the weekend, including introducing a couple of my children to the art of game creation.

I've tried popfly before. It can be compared to Yahoo pipes for getting web stuff working without programming, but is more powerful. What I didn't appreciate until I tried to install it on our Windows 2000 PC is that it's based on Silverlight not Flash. After two unsuccessful attempts (because the unhelpful error message didn't say it failed because of browser or OS) I tried our Windows XP machine. I guess the whole point behind MS giving away all this functionality is to get us hooked on Silverlight. Which is fair enough in some senses. However, given that Flash and Firefox both work on Windows 2000, it's annoying that their Windows operating system lifecyle (i.e. we don't support Windows 2000 any more) applies to all their software that they could probably develop for Windows 2000 relatively easily.

Minitab statistical software

We have a couple of copies of Minitab lying around and I'm selling them on Ebay. It seems to be pretty full featured statistical sofware. It's a timed listing, going out later today (12 May 2008), so if the link doesn't work, try later.

Friday, May 09, 2008

Unicode isn't so bad

This afternoon I produced a file with this in it:
šovský

I was filled with dread because I knew it meant I had to delve into Unicode which I don't feel I understand enough. However with a bit of digging, and this article on Python and Unicode I got there without too much trouble. I had to tweak my code as different original sources were in different formats, but I got there in the end.

Wednesday, April 30, 2008

Names are important

I think one of the most important things with creating new computer systems is the names for things. The thing that prompted me to write this is that I've just opened a directory called "datafiles". That name was decided long ago, before I came along. I'm not quite happy with it because it's too general. Most of the files in the whole directory tree are datafiles, not just those in this directory. The trouble is that to change the name I would have to change a whole lot of things - not just programs and macros, but procedures as well. And people would struggle for months and years to come to remember where what they wanted had moved to. Several years ago Blackbaud did a major change to Raiser's Edge moving the interface to a more Windows 95 style away from a Windows 3.1 style of interface. One of the things they did was to move the setting up of usernames and passwords from the "configuration" section to the "administration" section. I still have to pause for a second or two to work out where I'm going when I want to add a user.

When I worked for Logica many years ago I worked on a project which had a number of subsystems, and each of those had further sub-subsystems. The subsystems had three letter abbreviations and the sub-subsystems a further three letters. So, for example, IOSHAN was the HANdler part of the Input Output Subsystem.

The next project I worked on used the same idea and we thought carefully about the names before we started. And of course variable and routine names followed this convention.

In the rush to get going it's easy to stop and not name things carefully, but it reduces frustration if you think about it from the start.

Thursday, April 24, 2008

Bible Translation is bigger than you think

A good post on what's involved in Bible translation from a new blog by Dave G.
Just in case you think Bible Translation is a back-room activity for the seriously academic, here is a blog from a Bible-translation type who thinks otherwise.

Tuesday, April 22, 2008

Thursday, April 10, 2008

Linux Language software development

While I'm in Calgary I took the opportunity to visit the SIL team doing language software development for Linux. I got my first look at an OLPC running Bibledit. This has great potential for translation teams, as they don't need expensive laptops to get work done. In fact part of the reason for putting effort into Linux development is because you don't have to pay the overhead of getting legal copies of Windows and the other tools for the work (Office, Publisher, Photoshop). They're a nice bunch and they've even been so kind as to release some of their work which has general use - a library to help getting COM based Windows software to work under Linux.

Tuesday, April 08, 2008

View from the window

I'm in meetings at Wycliffe Canada working on our internal personnel system. This is the view from the meeting room window.
Calgary and the rockies

I'm working hard, but this view is good to look at.

Wednesday, March 26, 2008

Using volunteers to write programs

I'm assuming that you're in a small charity/non-profit. You don't have any programming staff, but you do have a volunteer who's offered to write a little program to solve a problem. Maybe they're going to write an Excel macro, or create an Access database for you.

However once they've finished and gone away, suppose it goes wrong, or you want something changing. How you can you prevent yourself getting stuck? The thing to do is make sure that you've sorted out a few things before they start:

  • What programming language are they going to use? Have you heard of it? Do you know anyone else who's heard of it? If it's something obscure then the chances are you won't be able to find anyone else to maintain it.
  • (You are going to need to maintain it. Even if it works now something will change in the future that will stop it working. Maybe the name of a server changes, or you rearrange the directories on your server, or you get a different printer, or you use different letters for your network drive, or it stops working when you upgrade to Windows 2010, or something else.)
  • They are going to document it aren't they? You need to have something written down about how it works so that should you need something changing then assuming you can find someone who knows about Excel Macros, or Access, or whatever, they will be able to find out enough about how it works that they can do it easily.
  • What should the document contain? Well, for a start, for all those things that might change - the drive letters, directories that it uses etc. - where do you change them in the program.
  • The document also needs to describe how you install the program on a new PC.
That should be enough to get you started.

Thursday, February 28, 2008

More automated web testing

I have progressed in my work with Selenium.

It now runs on a server, checks several of our websites hourly, and then emails me and sends a message to twitter if it fails. Twitter sends me an SMS message, so I can check it out if I'm near a PC (and my phone is on).

For the twitter bit I used this script, and hacked it a bit to remove the skype stuff.

Very sweet.

Lengthy computing job

When I worked at Logica I was told about a new project that I would be starting. The project was a Geographical Information System (GIS) for Anglian Water. My part on it was to be on the team that would write the software convert the (geographical) data from the old system to the new one. As it was described to me I thought "that's going to take days to run, maybe even a whole week". When it came to running it for real it took more than a few days, it was several months in the end.

The original data was organised in 1km squares, and we had several thousand of them. I can't remember how long it took to do a square, but I think it was between several minutes a couple of hours. At one point I suggested loading the whole database into memory, so we spent a large amount of money to get a massive 128Mb. They did it while I was on holiday and said it ran slower, but I wasn't convinced it had been done properly. The conversion process was as automated as I could make it, but it still took most of my time, 3 days a week to "feed" the two machines that were doing the processing with the next squares to do, and also to handle the results. (I can't quite remember why I couldn't just queue them all up and let them run.)

If only we had massive distributed computing power like we do these days, then we could have farmed the processing out to some servers in the cloud (for a price of course) and got it done in a few days maybe.

Friday, February 22, 2008

Automated website testing

I've been pondering for a while the best way to see if the various websites that I'm responsible for are up and running. When I researched this a while back, there were any number of companies that would test them for you, for a fee. However I couldn't find any tools.

Today I came across Selenium which seems to be a pretty powerful set of tools. There's an IDE for writing tests, a component for testing on your webserver (Selenium core), a component for testing on a given remote machine (Selenium RC) and a component for handing out tests to arbitrary remote machines (Selenium Grid). You need to have machines with your target browser on it somewhere, so if you want to test your site in IE, you need IE installed on a machine.

The software is at various 0.x versions, so doesn't look that mature, but on the other hand it has been adopted by Google: Google Open Source Blog: Selenium Users Event Coming Up, so that's a good recommendation.

Time to go and write some test scripts...

Tuesday, February 05, 2008

Using a wiki for procedures

A while ago I blogged about using a wiki for your procedures.

I've been using jumpbox list of wikis to evaluate some. Here are my initialconclusions (based on comparing the writeup with my requirements):

pmwiki
I particularly like two points from their philosophy:
1. Favor writers over readers
3. Avoid gratuitous features (or "creeping featurism")
tikiwiki
TikiWiki is your Groupware/Content Management System solution with a long list of features to help you build a compelling web based community: Wikis, Forums, Blogs, Articles, Image Gallery, Map Server, Link Directory, Translation and i18n. And much more...

Too much

moinmoin
Looks promising.

twikiwiki (Watch the extra w)
TWiki is a flexible, powerful, and easy to use enterprise wiki, enterprise collaboration platform and knowledge management system. It is a Structured Wiki, typically used to run a project development space, a document management system, a knowledge base, or any other groupware tool, on an intranet or on the internet.

Too much

mediawiki, as used by wikipedia
Promising. Slightly too much stuff on the page, but can be configured away.

docuwiki
Specifically designed for creating documentation, however you can't get email notifications when a page changes, which is a showstopper for me.

So that's three to look at. I haven't evaluated them on ease of installation, or maturity of product, or how much support there is, or how widely they are used. More to come...

Live search bugs

I found a couple of problems with Microsoft live search. The first is when you click on the help link. You get a nice popup window with some slick looking help material. However there are a couple of typos:

Then if you actually try out linkdomain:microsoft.com you get:


After gloating for a bit I then decided to report it and I get a certificate error for feedback.live.com.
More gloating.
I did ignore the error and tell them about the problem though.

Friday, February 01, 2008

UK Computer Newspapers

For some of the time in my working life I've had free weekly computer newspapers, usually some combination of Computing, Computer Weekly and IT Week

For the past 6 months I've had Computer Weekly and cancelled IT Week. However I'm going back to IT Week. Although Computer Weekly had Dilbert cartoons, and they seemed to be good at hassling the government about its IT projects, there was nothing of relevance to me in it. IT Week hits the target much more often. It's probably because Computer Weekly is more for big organisations. So there's my recommendation for what it's worth. (I haven't seen Computing in a while - it used to be the one that you read ostentatiously if you wanted people to know you were thinking of moving on.)

Wednesday, January 30, 2008

How to convince your boss you need a second (or third) monitor

Look straight ahead.
Now look approx 30° to the right.

Look straight ahead again.
Now look approx 30° to the right again.

How long does it take for your eyes to flick between the two positions?

Now Alt-tab, or take the mouse to the task bar and click a different application (or whatever your computer needs to do the same).
And back to the first.
And back to the second again.
And back to the first.

Which is quicker, moving your eyes, or switching applications? Which will mean you're less likely to lose where you where? Now can I have a new monitor?

Monday, January 28, 2008

A "proper" development environment

I've got some thoughts on how to manage volunteers who write programs/do systems for your non-profit floating around, but I'm going to write something about a "proper" dev environment first.

Writing programs is not like doing things the proper way. I'm assuming you've written some sort of script/program/macro to help you in your job, and you work in a small organisation (probably non-profit/charity), and there's no software development structure in place. You have this nagging feeling that there's something else you ought to do. You're right. I think the priority for those things you need to do are:

  1. Document - What does it do? What does it use? How does it work? What things are you most likely to want to change in future and how do you change them?
  2. Test - How do you test it without running the real thing? How do you make it easy to test everything and check that your latest change didn't break anything? How do you test it (see 1)?
  3. Deployment - How do you move the thing from where you test it to where it runs for real?
  4. Version control - What's the history of changes?

Tuesday, January 22, 2008

Cocomment exposes your emails from flickr

What happened was this:
I installed the cocomment Firefox extension. While on flickr I sent a flickrmail to someone. I didn't turn off comments, so cocomment tracked mine. I have an RSS feed to comments similar to mine, so anyone else with the same extension who sent an email from flickr (flickrmail) showed up in my feed reader:


Something to be aware of. Although it's tempting to read those emails, I haven't.

Monday, January 14, 2008

New Executive Director for Wycliffe UK

Wycliffe UK (which is where I work) will have a new Executive Director from 1 March. His name is Eddie Arthur and he has a blog. He's been in the organisation a number of years. It should be interesting to see what changes he brings.

As part of the transition into the job, he will be Acting Executive Director from the end of January.

Friday, January 11, 2008

Raiser's Edge database schema

I just found a really useful resource on the user-powered site for Blackbaud customers. For those wanting to dig into the RE SQLServer database you can get details on the database schema in the file C:\Program Files\Blackbaud\The Raisers Edge 7\Help\RE7Schema.chm

All credit to Dan Larson.

Tuesday, January 08, 2008

Converting a real machine into a virtual one

I've just followed some very helpful instructions on taking an image of a real (Linux) machine and turning it into Virtual Machine.

It boots, but at the moment I can't get the display (i.e. X-windows) to work.

Wednesday, January 02, 2008

Mozzarella Firefox

One of our kids was about to start their turn on the computer.
"Do we have to use Mozzarella Firethingy?" they asked.
"You don't have to, but IE keeps crashing," I said.
"Only about once a year," they said. Browser views in one so young!

As it is IE crashes every so often with the flash games they play, so more than once a year. I'm not sure if they prefer it because of familiarity, or because they don't have to type in URLs, because their favourites are in the dropdown in the address bar.