Kevin Colyer's thoughts and ponderings

Semi-random rambles


Leave a comment

How to guide for using the C of E Pathways Job Application system

HOW TO GUIDE PATHWAYS FOR APPLICANTS

Pathways provides not just a place to seek jobs in the Anglican church but also a central place to put your application details to avoid tedious repetition and cutting and pasting for difference dioceses’ application forms that vary little in core questions.

You can put your information on Pathways and indicate if you are seeking work, which can allow recruiters to search out likely candidates. I’m not sure if they do this though!

Once you create an account and log in you should fill in some biographical information into your profile. There are several sections.

Do note there are some assumptions made on the profile:

  • Vocational info – this is for clergy and roles following ordination.
  • Career – this is all other career information.

GOTCHA: if you are pasting in data from another document (say your CV in MS Word) use the tiny Paste From Word button. Note, if you don’t you can’t see any visible difference at first but later on if you see HTML tags like:   which you may want to edit.

When your profile is complete you can download a CV from your pathways profile which is useful. Or you can upload your CV you have previously made.

APPLYING FOR A POST

when you start an application for a post Pathways will try to link in data from your profile. It also brings some answers from previous applications too that are not editable from the profile such as some safeguarding responses etc. presumably to speed the completion of these sections.

Note: If you change an iten in an application form that appears on your profile it will also be changed on your profile.
GOTCHA: if you delete an item here it will be removed on your profile!

You can only move forward step by step once each page is complete. But you can stop and save at each point.

GOTCHA: You can not delete an application in the progress of entering in data. Despite the application only being final at the submission step at the end. Pathways staff will have to assist. They will withdraw you from an application. You will not be able to re-apply for that post from your current login in this case. (You may have to make a separate login to pathways to re-apply if this was the case)

Once a form is submitted profile changes will not affect the submitted application.

NOTES

When the application form is created by a diocese HR person for Pathways they request sections from templates. If there are strange errors or omissions (i.e. no personal statement box or no vocational or educational history section) please contact Pathways support – they are helpful and can sort many issues out swiftly.

In general there are slightly different templates for lay and clergy positions so there may be corner cases. Please check if you are in doubt.


1 Comment

Perl Weekly Challenge – Week 54

This week on the Perl Weekly Challenges I was working on the two tasks for challenge 54.The first challenge was simple in Raku (formerly Perl 6), a one liner, but the second challenge was about creating a favourite sequence of mine, the Collatz Conjecture. I thought I would block about this as the extra part to the task was computationally intensive and my solution took just 10 seconds to calculate the 1 million steps; Raku is not yet known for speed! (I tested this on my Lenovo X260 laptop) Continue reading


Leave a comment

Perl Weekly Challenge – Week 36

I have been enjoying completing the Perl Weekly Challenges over the last six months or so. Solutions in other programming languages are welcomed by the way. I have been using the challenge to develop my Raku (formerly Perl 6) skills.  I was crowned champion of week 30!

I have learnt much from the challenges and also from the blogs others have written detailing their solutions. It is all about sharing an appreciation of the Raku language and fostering a wider adoption.

Please take my solutions in the Perl spirit of “There Is More Than One Way To Do It”: this is my way.

So on to the tasks:

Task 1

Write a program to validate given Vehicle Identification Number (VIN). For more information, please checkout wikipedia.

After a quick review of the wikipedia page I decided I would verify the general form with the checksum, just to keep things simple. I am sure there are modules already written that are more correct than I could write anyway.

A VIN has 17 digits. The 9th is a checksum digit (ranging from 0 to 10, with X substituting for 10) Letter I, O, and Q not valid. The checksum digit can be ignored in the checking part and compared once calculated.

I started by creating the tables that the validation algorithm would require.

my %value=
    A => 1, B => 2, C => 3, D => 4, E => 5, F => 6, G => 7, H => 8,
    J => 1, K => 2, L => 3, M => 4, N => 5, P => 7, R => 9, S => 2,
    T => 3, U => 4, V => 5, W => 6, X => 7, Y => 8, Z => 9, "_" => 0,
    0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9;

my @weight=8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2;

The validateVIN function does all the hard work returning ‘valid’ if correct or an explanation if not.  See numbered notes below:

sub validateVIN($vin is copy) { #1
    my @v= $vin.uc.comb; #2
    return "invalid vin character: I,O or Q"     if $vin ~~ m:i/ <[ I O Q ]>+ /;
    return "invalid vin length {$vin.chars}" if $vin.chars != 17;

    my $check=@v[8]; #3
    $check = 0 if $check eq '_';
    $check = 10 if $check eq 'X'; #4
    my $i=0;

    for ^17 {
        $i += %value{@v[$_]} * @weight[$_]; #5
    };

    return $i % 11 == $check ?? "valid" !! "invalid - failed checksum" ; #6
}
  1. $vin is marked as a copy. This allows the sub to change its value without having to worry about changing the original value it was called with or needing to be copied to a new variable.
  2. The @v array is filled with the $vin, converted to uppercase and ‘combed’ into individual letters as elements of the array.
  3. We capture the check digit here.
  4. The check digit is converted from base 11.
  5. A simple loop counts ^17 (up to 17) passing the value into the for loops code block as the topic variable $_. The sum is calculated from the product of the value of each digit looked up in the hash and the corresponding weight in the table. The checksum weight is zero handily removing it from the calculation.
  6. The newly calculated checksum is divided modular 11 and compared with the original check digit.

 

#| Enter a Vehicle Identification Number to validate
multi MAIN(Str $vin) {
    say validateVIN($vin);
}

The MAIN function is a great tool to create a CLI easily. Here the comment #| gives extra usage information.

It is declared as a multi sub so I can also run tests too.

multi MAIN('test') {
    is validateVIN("111111111111111i1"),"invalid vin character: I,O or Q","invalid vin character: I,O or Q";
    is validateVIN("111111111111111111"),"invalid vin length 18","invalid vin length 18";
    is validateVIN("11111111111111111"),"valid","Vin is valid = all 1's'";
    is validateVIN("1M8GDM9A_KP042788"),"invalid - failed checksum","invalid - failed checksum";
    is validateVIN("1M8GDM9AXKP042788"),"valid","Vin is valid = wikipedia example";
done-testing;
}

I used the is function from the Test module as I like the way that if your test fails it prints both the expected and received values. done-testing declares Testing is done and makes the test results clearer. I find that easier than pre-declaring the number of tests to run.

Task 2

Write a program to solve Knapsack Problem.
There are 5 color coded boxes with varying weights and amounts in GBP. Which boxes should be choosen to maximize the amount of money while still keeping the overall weight under or equal to 15 kgs?

R: (weight = 1 kg, amount = £1)
B: (weight = 1 kg, amount = £2)
G: (weight = 2 kg, amount = £2)
Y: (weight = 12 kg, amount = £4)
P: (weight = 4 kg, amount = £10)

Bonus task, what if you were allowed to pick only 2 boxes or 3 boxes or 4 boxes? Find out which combination of boxes is the most optimal?

I took this task to mean there were only 5 boxes in total. This is what wikipedia describes as the 0-1 Knapsack problem I think. (Having submitted my entry I noted that others had solved the Unbounded Knapsack problem: UKP. I ran out of time here and wrote this blog instead!)

class box {
    has Str $.colour;
    has Int $.weight;
    has Int $.amount;
}

my @boxes=
    box.new(colour => 'R', weight => 1 , amount => 1 ),
    box.new(colour => 'B', weight => 1 , amount => 2 ),
    box.new(colour => 'G', weight => 2 , amount => 2 ),
    box.new(colour => 'Y', weight => 12, amount => 4 ),
    box.new(colour => 'P', weight => 4 , amount => 10),
;

I started creating a small class to encapsulate the concept of the box. Then I filled a array with one of each. This is used so I can use an index to refer to boxes and not have to create many objects.

my @combinations=(^@boxes.elems).combinations;

my $max_weight=15;
my $max_boxes=@boxes.elems;

I then used a method called combinations that creates all the possible combinations of the initial list (which is started with the ^@boxes.elems, shorthand for a range of numbers from 0 up to the number of elements in boxes -1. Just what I need for combinations of indices later.

The knapsack sub does the main work.

sub knapsack(@combinations,@boxes,$max_weight,$max_boxes) {
    my @cands= gather for @combinations -> @c { #1
        next unless @c.elems <= $max_boxes; #2
        
        my $w= @boxes[@c]>>.weight.sum; #3
        
        next unless $w <= $max_weight; #4
        
        my %wv= comb => @c, w => $w, v => @boxes[@c]>>.amount.sum; #5
        take %wv; #6
    }
    @cands.=sort({$^a<v> <= $^b<v>}); #7
    
    return @cands[0];
}
  1. The candidates for best solution are ‘gathered’ into the array @cands using a for loop over the possible combinations.
  2. Jump to the next iteration of the loop if the number of combination are more than we are allowed.
  3. $w is assigned by taking an array slice of the indices given by the combination. This could be 1,3,4 for example. The >> is a hyper operator that passes all the boxes taking their .weight value and summing all the values together. This saves a simple loop here.
  4. Skip along if we are already overweight…
  5. Store this in a hash this for later, especially the .amount which is the GBP value.
  6. We take the hash. This passes it back to the gather, but immediately continues the loop (in this case starting the next turn around.)
  7. Finally we sort the candidates by value in descending order. All that remains is to return the best one, at the head of the array.

Finally we print the solution

my %best_value= knapsack(@combinations, @boxes, $max_weight, $max_boxes);
say "(max boxes $max_boxes, max weight $max_weight)";
say "Best boxes are "~ (@boxes[$_].colour for flat %best_value<comb>).sort.join(" ");
say "total weight: {%best_value<w>}Kg, value: £{%best_value<v>}";

The most complex part is the printing of the colours of the boxes. This required a ‘flattening’ of the list the hash containing the solution otherwise it was treated not as a list of integer indices but as a list containing a single item (a list of integers). Caused a bit of head scratching that.

The Bonus part of the challenge was fairly simple given that the knapsack was solved in a sub. I looped over the max boxes and kept track of the maximum amount value.

my $best_num_boxes=0;
my $best_GBP_value=0;
my %best;

for 2..4 -> $max_boxes {
    my %best_value = knapsack(@combinations, @boxes, $max_weight, $max_boxes);
    if %best_value<v> > $best_GBP_value {
        $best_GBP_value = %best_value<v>;
        %best=%best_value;
        $best_num_boxes = $max_boxes;
    }
}

say "\nBonus\nOptimal number of boxes to maximise value for 2 to 4 boxes is: \n$best_num_boxes with {%best<w>}Kg, value: £{%best<v>}";

I hope that helps. Errors, omissions and improvements welcomed!


Leave a comment

Psalm 96: A lukewarm paraphrase for the Modern Charismatic Man (or Woman)

(a little paraphrase I wrote for a talk the other day…)

vv1-3

Mumble to God my favourite Hillsong (or Hymn from Ancient and Modern, if you like.)

Enjoy the catchy melody and sing words about God.

Sing the words about Jesus and the stuff he did in the bible.

Sing out in the safety of the church.

Sing with everyone else who likes being a Christian.

vv4-6

God is the best, at least I think so (certainly when everything is going well for me! Especially now I have a foot on the property ladder.)

He is number one in my life (today.)

Perhaps there are a few other top priorities in my life.

But it is all about balance. Fitting God neatly into my lifestyle.

vv7-9

Talk about God, with the other Christians.

Talk about God with other people like me.

Talk about God with people who see it like I do

Give my leftover time to God.

Give my spare cash because I don’t smoke or drink too much.

Sing to God in the jolly nice church. Thank God the heating is working again.

v10

Somebody should let the unsaved know about God.

God will fiercely send people to hell (I think).

So we can be happy because it won’t be us.

He made the whole world perfect. I might be messing it up but that’s ok, we’ll get a new one.

vv11-13

I like sunsets.

I like trees in autumn. They are pretty.

Nature is really nice. But I don’t like wasps much.

Lookout, here comes God. I like it when he does good stuff for me but I am less sure how to cope when bad stuff happens.

Meh.


Leave a comment

Using Zotero to manage bibliographies and simplify writing essays

zotero2

Zotero running with several collections on the left

I am a student again for the next three years and amidst the general perks of student life (leaving dirty dishes in the sink, book buying and NUS card discounts) there is the downside of having to write essays of which the worst part is writing bibliographies and formatting them correctly. Worse yet we need to use the Modern Humanities Research Association (MHRA) style to format them, which is not the easiest style.

So as computers are supposed to make our lives easier I searched about for some software to help. I think I have found an amazing (and FREE) tool and I wanted to share it with you.

Zotero is a bibliography manager. This means it is a database you can put books (and any other resource – webpages, journals, pdf’s etc.), you can even make notes in it. Then you can create smaller folders (mini-bibliographies) with the sources you are using for different essays. It comes with plugins and exports that make sticking the references into the proper places in your essay very simple. It also dumps the bibliography in the right place too, and keeps it in alphabetically sorted, AND it formats each entry and citation perfectly according to the MHRA style (or any other it supports). Did I mention it runs on Windows, Mac and Linux and was free? (Oh yes and on Google Docs too – see this article for more info)

I enjoy getting sources into it the most. If you know the ISBN of a book for example you can type it in and, poof, it searches for the data and plops the entry in Zotero. If it gets it wrong you can change the data too.

The best bit comes when you are browsing the web. If you are searching for Journals, books (Amazon) or even what to source the webpage you are reading there is a small blue book icon that appears. Clicking this drops the resource straight into Zotero! If there are multiple sources you get to pick which. Wow. Utterly painless.

How it works

You can grab a copy from http://www.zotero.org. If you are a Firefox user then you are in luck as it integrates best with Firefox as a plugin. Otherwise you can install it as a standalone (which I do). At this point you will most likely to need to register an account at Zotero, which is also free and painless. This means your database is up to Zotero and even synchronised with another copy of Zotero if you have two computers. But you will need an account so you can use the Zotero plug-in for other browsers. Safari and Chrome are supported. You need to dig into the preferences of Zotero and the relevant plugin to enter your username and password. This is straightforward. Do make sure you select the MHRA style when asked (or go to preferences to select it) as otherwise it will diligently use the Chicago style or some other (saner) style and not MHRA.

So off you go, adding sources. I make sub folders for each essay and it is simple to drag and drop the sources about. I also make notes in Zotero when I am reading. Each source has a notes section. You can search and tag stuff and have as much fun as you wish.

zotero1

Selecting more sources – you can choose multiple sources if you want.

Writing an essey

Zotero has plugins for Word and for Libreoffice and offers to install when you install the main program. This offers you a handy little toolbar.

MHRA requires lots of footnotes. You can add footnotes in the normal way in your word processor, but when you want to add a citation you can click in the insert reference button on the Zotero toolbar in the word processor.

This pops up a bar on the screen. Type the author or a word from the title and Zotero will offer you a drop down list of sources to choose from. It puts a blue blob around the source once selected. Click on the blob to add a page number or page range. After that hit return or add another source if you want. Now the magic happens as you continue to edit and add resources Zotero keeps adapting the footnotes according the style rule.

zotero3

Inserting a citation (click on the blue oval to add pages)

You will of course need to add a bibliography section at the end. Again. Make the page you want it on click on the Insert Bibliography button and, poof!, a sorted and well formatted list is dropped in. This dynamically changes as you add new sources.

For the Durham Common Awards we have the added pleasure of needing different bibliographies for Primary sources, Secondary sources and Dictionaries. This is more troublesome but can be worked around in the following way. In Zotero make a separate collection folder for your essay and add the word “secondary” to it if you like and perhaps another collection with “dictionary” in the title. Add the appropriate sources to each folder. Then when you are done right-click on the folder and choose “Create Bibliography from Collection…”. This offers you several choices. I chose Copy to Clipboard and then pasted it into my essay after the proper heading. Poof (again!), a delightfully formatted sorted list.

zotero4

Choose where you want the bibliography to go. This grows as you add more citations

Over to you

I hope you find this useful. Do play with Zotero. I am finding this a genuinely useful tool playing to the strengths of the computer. Computers are good at formatting following complicated styling rules. Humans are not. Humans are good at selecting suitable sources for essays, computer are not! And that’s the way it should be.


One more thing – Getting the Modern Humanities Research Association Zotero style sheet with ibid!

This may not mean anything to you but the MHRA style sheet that comes with Zotero is wonderful but misses placing ibid as the authors name in a citation if it follows directly on from the last footnote. This is in the standard that I have to follow from Durham. Some kind folks have modified the style to include this feature. You should download it here.

To make it work you need to import it into Zotero. You do that from the Edit/Preferences menu. It brings up the dialog in the screenshot. If you click on the button marked 1 you will get a file picker and you can point it to the attachment .csl file.

Then all you need to do is to select the new style (2) and Zotero will format your footnotes even more perfectly!

Beans Beas by 4rank CC by-nc 2.0 flickr.com


Leave a comment

Baked Beans on Toast!

Supply Chains to the Supermarkets

Milk and Butter Production

  1. Using the papers provided create a timeline for the production of Milk and Butter from farm to fridge. Write down as many in between steps as you can think of.
  2. How many people are involved in bringing milk and/or butter from farm to fridge?
  3. What is wonderful about the process?
  4. Does anything concern you? How could we respond?

You may use the internet to help you. You may find the following links of use:

Butter:

Human impact:

Tea Production

  1. Using the papers provided create a timeline for the production of tea from field to teapot. Write down as many in between steps as you can think of.
  2. How many people are involved in bringing tea to your teapot?
  3. What is wonderful about the process?
  4. Does anything concern you? How could we respond?

You may use the internet to help you. You may find the following links of use:

Human impact

Bread Production

  1. Using the papers provided create a timeline for the production of bread from field to toast. Write down as many in between steps as you can think of.
  2. How many people are involved in bringing bread to your toaster?
  3. What is wonderful about the process?
  4. Does anything concern you? How could we respond?

You may use the internet to help you. You may find the following links of use:

Human impact

Baked Beans Production

  1. Using the papers provided create a timeline for the production of baked beans from bush to saucepan. Write down as many in between steps as you can think of.
  2. How many people are involved in bringing baked beans to your saucepan?
  3. What is wonderful about the process?
  4. Does anything concern you? How could we respond?

You may use the internet to help you. You may find the following links of use:

Human Impact

 


Leave a comment

I am voting REMAIN tomorrow

So after weeks of the campaigns I am going to the polls tomorrow and I will vote REMAIN.

I am unconvinced by the arguments of Brexit that suggest leaving is sufficient to stem migrancy. I am certain that the legal disentanglement from Europe will take decades and will leave us poorer.  We will still be paying money to enter into the market-place to trade and then we will have no say in what happens there. I am not convinced that being British and standing alone is helpful for us. Isolation is not a great strategy.

I am certainly not on the side of Johnson, Gove, Duncan-Smith and especially Farage. I am hoping that a Remain vote will curtail Farage’s voice. I can’t imagine what future will look like in Britain if we leave as he will grow in importance in our politics. I think there is truth in the saying that the way immigrants are treated is how government would treat everyone if they could get away with it. I don’t want that future.

Instead I will vote along with the hundreds of historians, hundreds of economists and the vast group of people who want to be associated with the European project. It is not perfect but has brought peace and prosperity to a continent broken after two World Wars and thousands of years of feuding and strife. There has never been anything like the European Union. I value standing in solidarity with others than being in isolation. Being a part of the EU is good for all the other members, not just for us. It costs us peanuts compared to our ongoing costs for health, welfare and defense and arguably has lowered our defence budget much more than the millions we send each week.

Having live outside of the UK for 10 years I have seen much of Europe. I have visited the EU buildings, interacted with MEP’s and many of the people who work there. I have seen first hand the changes in many parts of Europe that membership has made to the many regions that have been poor and underdeveloped. I have seen the pride and engagement of many Eastern Europeans who have a future of safety and freedom from oppression in the EU. Many of these nations were under Soviet control as I grew up.

In sight of the EU parliament building in Brussels there is a small sliver of graffiti covered Berlin wall; standing next to it I feel relieved and thrilled that it no longer exists and the threat it implied of war and the symbol of division it embodied is no more.

I am proud of my Nobel Peace prize that I share with all European Union citizens. I don’t want to let my share slip from my hands.

Vote REMAIN with me tomorrow.