Catalyst IT Limited  
Planet Catalyst
 

21 May 2018

Catalyst News

Catalyst submission on a change to NZ's privacy legislation

We have made a submission on the Privacy Bill (2018), a bill designed to amend the Privacy Act 1993 which is currently being considered by Parliament’s Justice Select Committee.

Student First Programme’s Easy Enrolment Project

We have been working with the University of Canterbury (‘University’) on the Student First Programme’s Easy Enrolment Project since May 2017.

11 May 2018

Catalyst Blog

face

Why Catalyst is a great place to start your career as a new tech graduate

by Alex Buckley

Alex Buckley

Starting out as a full-time employee in the tech industry is an exciting transition for anyone, the old certainties of study life are swept aside and in their place, you must adapt to an entirely new working environment and new technologies. You realise that when you start working in tech full-time that’s when the real learning begins and you absorb exponentially more knowledge than you did whilst studying.

Starting out at a company that appropriately supports your learning, challenges you, and listens to your ideas is paramount. The confidence you gain from completing your first solo project for an appreciative client or making a breakthrough on a research and development project is what powers you through long periods of troubleshooting and times when you doubt your abilities.

Catalyst IT is such a company. Many of the new graduates that Catalyst employs started off as summer interns, who are assigned to one of the many teams at the company for the whole 3-month internship.

I started as a summer intern in the 2016/17 summer in the Catalyst Koha team. Koha is the worlds first open source Integrated Library Management System (ILMS), the project started in Levin in 1999 and the system is now a global project and is used by 15,000 libraries worldwide with millions of patrons. It was, and is, very exciting working on a project with a significant global impact.

Its also great to know that before interns arrive at Catalyst the teams they are assigned to decide upon a useful development or R&D project to be worked on, so you know what your doing will add real value to the team and the company.

Four great reasons why I think Catalyst is a great place to start out as a new tech graduate and why you should apply are:

Open source

As Catalyst is an open source software development company, many of teams develop and/or contribute for an open source product. For example my team hosts and supports Koha installations for clients and contribute new features and bug fixes for the worldwide Koha community.

I have found collaborating with other developers from all over the world is the perfect way to add diverse viewpoints. You are forced to think about users in different locations who speak different languages and have different network speeds and knowledge/experience of technology. It introduces you to different human conditions. This will then be reflected in your work.

Training

In my time at Catalyst, I have attended three different Catalyst run development courses on Perl programming language, ElasticSearch, and Linux Server – threre is a big support of staff members professional development.

Catalyst runs training sessions on a wide range of open source technologies, frameworks, systems and methodologies. These courses are aimed at people outside of Catalyst but after getting your project managers approval you can attend.

It's so great to work for a company that really values its staff and wants to support them improving and adding onto their skill-set.

Your team will listen to your ideas

When starting out in the tech industry you're enthusiastic and full of ideas, I have found that Catalyst welcomes this!

At regular team meetings, I suggest ideas in any aspect of what the team works on and they are well received and discussed. They may be taken on board in their original state or may be modified after getting constructive feedback.

Whatever happens, I always gain more knowledge, and a respectful and constructive exchange of ideas and thoughts will have happened.

Catalyst does not disregard your ideas because you are just starting out as a full-time member of staff, instead they value and often take on board the ideas, which means such a lot to you when you are starting out.

Travel

Finally, if you are a keen world traveller, as I am, then Catalyst is the perfect place to work. They were not only supportive of me working remotely from the South Island whilst I finished my degree, but also I was able to go and work in their UK office after travelling through Egypt and Jordan in the 2017/18 NZ summer. During my time in the UK, I was able to do 6 different weekend trips throughout the UK, France and Italy.

Without having the opportunity of working in the UK I would not have been able to have this wonderful European experience.

In addition to being an excellent way to extend your holiday whilst still being paid, it also takes the hassle out of trying to determine if the accommodation you rented (which you intend to work in remotely) has adequate internet access and is quiet enough to work in.

Moving away from full-time study to full-time work in the tech industry takes a bit of getting used to. But, starting out in a company like Catalyst, you will be supported you as you spread your wings, take on more responsibilities and begin the learning that will span the rest of your career.

 

02 May 2018

Catalyst News

Totara User Conference - Asia Pacific 2018

Date

Tue, 5 Jun 2018, 08:30 – Wed, 6 Jun 2018, 16:00 AEST

Location

Cliftons Sydney Spring Street Sydney, NSW 2000 Australia

 

Catalyst Blog

face

Open Source Academy student to Catalyst employee: Liam Sharpe

by Brooke Penny

I caught up with Liam, one of our front-end developers, about his experience going from an Open Source Academy student to a Catalyst employee. 

Liam sat in front of computer

What year was it when you were an Catalyst Open Source Academy student?

2015

What school did you attend when you took part in the Catalyst Open Source Academy?

I was just starting year 13 at St Patricks College in Silverstream.

What did you enjoy most about the week long Academy? At the end of the week, did you leave feeling enthused and inspired?

- The academy was a lot of fun, I got to learn a lot of cool new things and experience all the different parts/teams of a IT organisation. I had previously assumed that IT was only developers and while development is still where I want to go, it was interesting to find out that there was so much more.

- At the end of the week, I was super happy with what I had accomplished. I got to work with the Piwik team to make their very first theme (which currently has over 7k downloads!)

From here, did you study before joining Catalyst? If so, what qualification? Or did you join as an intern part time while completing study as well?

I joined Catalyst part time when I was in year 13 of high school (6 months or so after the academy). Since then I have started a Bachelor of IT degree with a double major in programming and software engineering at WelTec. I am currently in my third year of study.

What have you enjoyed most so far about working for Catalyst?

- Catalyst has a very relaxed working environment. It is easy for me to fit work in around my studies.

- The people I work with are super friendly and cool!

- Catalyst provides so much for me; be that pizza at pizza Thursday, drinks at beer o'clock, numerous team outings, a computer I can install what I want on (within reason obviously), a day to do whatever I want at the Catathon, or even the scholarship they graciously awarded me to help with my study.

- I love my team, and I love Catalyst.

Do you feel like being an ex Catalyst Open Source Academy student was an advantage when it came to securing employment?

Definitely. I initially applied for a python role here and was asked to come in for an interview. But Don and Kristina remembered me from the academy because they more or less offered me a job on the spot as a front ender on the Mahara team. I assume creating a theme instead of solving bugs like everyone else at the academy made me stick out a bit!

Have you been involved as a mentor for the Catalyst Open Source Academy since becoming an employee? How did you find that? Was it different being on the other side of it?

I have helped out at two academies since, mainly with the UX/front end side but I have also helped with the testing part . It was fun! I enjoyed being able to help out the students and it was cool to see them working away at something they clearly enjoyed doing.

How would you describe the culture at Catalyst and how does the IT work environment differ from what you imagined it to be?

Catalyst culture is very unique. It's very easy to walk up to someone and start talking, be it work related or not. Everyone is cheerful and best of all, there's no dress code, I can turn up in a suit and tie one day, and a fully black dress with chains spikes and a face full of make-up the next and nobody cares (... so long as I'm not meeting any clients).

Has IT always been an area in which you wanted your career to go?

As a 10 year old I wanted to an inventor - It wasn’t for a few more years I learned mechanical engineer was a much closer description of what I wanted to do (and something I could actually look up in career books too). I used to play around with a lot of Lego and when I was about 15 I got a Lego mindstorms kit which was like a Lego set with a computer in it you could program (via very simple drag and drop blocks) to do whatever you wanted. This made me get into more of the programming side of development and I've stuck with it since.

If you had to say one closing statement to students considering doing the Catalyst Open Source Academy, what would it be?

Do it! You will have an awesome time, learn some awesome new skills, make new friends, and maybe even get a full time job at arguably the coolest place.

01 May 2018

Catalyst Blog

face

Koha tips and tricks

by Alex Buckley, Koha Junior Developer

Koha is a Library Management System used worldwide by approximately 15,000 libraries. The Koha team at Catalyst are passionate about using Koha and helping libraries (big and small!) get the most out of their Koha LMS.

On 22nd March Whanganui Libraries hosted the 2018 New Zealand Koha User Group day. This event took full advantage of the wealth of Koha knowledge brought together in one room, by running sessions ranging from Q & A to U.X./design enhancement and bug fixing to consortium history sessions. In the first instalment of our ‘Koha Tips & Tricks’ series, here are a few questions that came up and the learnings over the user group day.
 

1. How do I add or modify text and styling on the Koha OPAC main page?

The OPAC (Online Public Access Catalog) is the publicly accessible interface of Koha. If you want to have a very swish looking OPAC, you may wish to have a designer/programmer set this up for you, but you could try some parts out for yourself too. As well as being styleable, the OPAC main page can have custom content added to it which is something someone with a basic knowledge of HTML code can do, here’s how:

System preferences are configurable settings that control how Koha works, if you don’t know the code you need you could take a look at this list of code examples to pick a change you would like to see. The below diagram illustrates which system preferences edit each region of the OPAC main page.

Sign in to your Koha intranet

Go to Administration->Global system preferences->OPAC

Scroll down to find your chosen system preference or you can search for the system preference in the search box at the top of the page.

Put your HTML code (found from a website as above if you don’t know it) into the system preference to add content to its OPAC region

Save your changes

For a more detailed explanation of each system preference go to the OPAC Configuration section of the Koha manual.


 

2. How do I get a new language added to the OPAC and staff client of my Koha (eg Te reo Māori)

Once you have had a developer install the language package to your Koha instance, you will need to follow a few steps to turn it on:

  1. Go to Administration, click ‘System preferences’
  2. Click the I18N/L10N tab on the left hand side, down a bit in the list
  3. Look for the preference OPACLanguages and tick the box next to Te reo Māori. Do the same for the language preference.
  4. Look for the preference opaclanguagesdisplay, and set this to Allow.

Your users should now be able to switch between English and Māori on both the OPAC and staff client. The switcher button will turn up at the very bottom of the page as highlighted below.

Staff client

 

OPAC

 

 

3. How can library staff and patrons who don’t know how to code still contribute to the Koha project?

Knowing your work is included in a worldwide project being used by thousands of libraries is a very motivating and exciting prospect. A good way for engaging library patrons is for them to contribute to the Koha translation project, where they can translate English content on Koha pages to whichever language they are experts in. Once translated text is submitted to the project, it will be pushed upstream and integrated into Koha, so libraries that update to new versions will show your personal work in their live Koha system!

Here’s how:

1. Log in to Koha Translation Project

  • http://translate.koha-community.org/ sign up as a new user
  • check your email and click on the link sent to you to verify your new account
  • You are now a member of the Koha Translation Project and should now see a screen similar to the one shown below:

2. Select a Koha version or manual link (highlighted)

3. Select which non-english language link you want to translate to, for example Turkish.

4. A list of files with completion progress bars is displayed. Hover over the progress bars to learn what percentage complete they are and select a file to translate which is less than 100% complete, i.e. the green colour is not spanning the whole progress bar.

5. Scroll down and click on the ‘Continue translation’ link (highlighted in the below screenshot)

6.

Translate the English text after the final hash # symbol.

This means translate the text including the code tag (which in the below screenshot is <br>) to your selected language, which in this case is Turkish. Please note in the below screenshot highlighted in yellow the English text to be translated. Write the Turkish translation in the input box

7. Select the ‘Submit’ button

You have now submitted a translation to the Koha translation project!
 

4. I’ve heard people talking about a ‘carousel’ what is it and what can it do?

A carousel is a very cool moving display that slides side-to-side, showing the cover images of your library’s newly added catalogue items. Here is an example from Rangitikei Libraries, you can have a play on the live version here.

A carousel is something that you will need to have a developer install and configure for you, but you will be able to make the following decisions about the functioning and look of your carousel as these settings are configurable:

-Number of cover images displayed

-Speed of the carousel automatic slideshow

-Whether you want arrows on the left and right of the carousel so that users can skip through the carousel faster than the automatic speed

-Size of the cover images in the carousel

-Whether you want the carousel to play automatically

-How often the carousel updates with the newly added items.

09 April 2018

Kristina Hoeppner

face

Mahara 18.04: New privacy features

Last Friday, 6 April 2018, we, the Mahara core team at Catalyst, released Mahara 18.04. It was half a year of intense work especially getting the GDPR features in to help institutions in their compliance with that new EU regulation.

The GDPR is also the reason for the early release of Mahara 18.04. Typically, we release towards the end of the month. Since we know that many institutions need to upgrade before 25 May 2018, we made sure to release as soon as possible to give everyone a bit more time to upgrade.

It was a pleasure to work on Mahara 18.04. There are many other new features in this release, and it’s been fantastic to see one of our part-time students having contributed a lot of bug fixes and also some new features that had been on our wishlist for a very long time.

Here’s the video I made to introduce a number of the new features.

Silence

Empty chairs at a table
unsplash-logoSabri Tuzcu

It’s been a wee bit quite over the last 1.5 years here on my blog. I’m going to resurrect it again this year because it does help to keep things in one place.

Let’s start off with the past (the empty seats) and fill them up as time goes by.

17 September 2017

Andrew Ruthven

Missing opkg status file on LEDE...

I tried to install LEDE on my home router which is running LEDE, only to be told that libc wasn't installed. Huh? What's going on?! It looked to all intents as purposes as though libc wasn't installed. And it looked like nothing was installed.

What to do if opkg list-installed is returning nothing?

I finally tracked down the status file it uses as being /usr/lib/opkg/status. And it was empty. Oh dear.

Fortunately the info directory had content. This means we can rebuild the status file. How? This is what I did:

cd /usr/lib/opkg/info
for x in *.list; do
pkg=$(basename $x .list)
echo $pkg
opkg info $pkg | sed 's/Status: .*$/Status: install ok installed/' >> ../status
done

And then for the special or virtual packages (such as libc and the kernel):

for x in *.control; do
pkg=$(basename $x .control)
if ! grep -q "Package: $pkg" ../status
then
echo $pkg is missing; cat $x >> ../status
fi
done

I then had to edit the file tidy up some newlines for the kernel and libc, and set the status lines correctly. I used "install hold installed".

Now I that I've shaved that yak, I can install tcpdump to try and work out why a VoIP phone isn't working. Joy.

02 September 2017

Andrew Ruthven

Network boot a Raspberry Pi 3

I found to make all this work I had to piece together a bunch of information from different locations. This fills in some of the blanks from the official Raspberry Pi documentation. See here, here, and here.

Image

Download the latest raspbian image from https://www.raspberrypi.org/downloads/raspbian/ and unzip it. I used the lite version as I'll install only what I need later.

To extract the files from the image we need to jump through some hoops. Inside the image are two partitions, we need data from each one.

 # Make it easier to re-use these instructions by using a variable
 IMG=2017-04-10-raspbian-jessie-lite.img
 fdisk -l $IMG

You should see some output like:

 Disk 2017-04-10-raspbian-jessie-lite.img: 1.2 GiB, 1297862656 bytes, 2534888 sectors
 Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disklabel type: dos
 Disk identifier: 0x84fa8189
 
 Device                               Boot Start     End Sectors  Size Id Type
 2017-04-10-raspbian-jessie-lite.img1       8192   92159   83968   41M  c W95 FAT32 (LBA)
 2017-04-10-raspbian-jessie-lite.img2      92160 2534887 2442728  1.2G 83 Linux

You need to be able to mount both the boot and the root partitions. Do this by tracking the offset of each one and multiplying it by the sector size, which is given on the line saying "Sector size" (typically 512 bytes), for example with the 2017-04-01 image, boot has an offset of 8192, so I mount it like this (it is VFAT):

 mount -v -o offset=$((8192 * 512)) -t vfat $IMG /mnt
 # I then copy the data off:
 mkdir -p /data/diskless/raspbian-lite-base-boot/
 rsync -xa /mnt/ /data/diskless/raspbian-lite-base-boot/
 # unmount the partition now:
 umount /mnt

Then we do the same for the root partition:

 mount -v -o offset=$((92160 * 512)) -t ext4 $IMG /mnt
 # copy the data off:
 mkdir -p /data/diskless/raspbian-lite-base-root/
 rsync -xa /mnt/ /data/diskless/raspbian-lite-base-root/
 # umount the partition now:
 umount /mnt

DHCP

When I first set this up, I used OpenWRT on my router, and I had to patch /etc/init/dnsmasq to support setting DHCP option 43. As of the writting of this article, a similar patch has been merged, but isn't in a release yet, and, well, there may never be another release of OpenWRT. I'm now running LEDE, and the the good news is it already has the patch merged (hurrah!). If you're still on OpenWRT, then here's the patch you'll need:

https://git.lede-project.org/?p=source.git;a=commit;h=9412fc294995ae2543fabf84d2ce39a80bfb3bd6

This lets you put the following in /etc/config/dnsmasq, this says that any device that uses DHCP and has a MAC issued by the Raspberry PI Foundation, should have option 66 (boot server) and option 43 set as specified. Set the IP address on option 66 to the device that should be used for tftp on your network, if it's the same device that provides DHCP then it isn't required. I had to set the boot server, as my other network boot devices are using a different server (with an older tftpd-hpa, I explain the problem further down).

 config mac 'rasperrypi'
         option mac 'b8:27:eb:*:*:*'
         option networkid 'rasperrypi'
         list dhcp_option '66,10.1.0.253'
         list dhcp_option '43,Raspberry Pi Boot'

tftp

Initially I used a version of tftpd that was too old and didn't support how the RPi tried to discover if it should use the serial number based naming scheme. The version of tftpd-hpa Debian Jessie works just fine. To find out the serial number you'll probably need to increase the logging of tftpd-hpa, do so by editing /etc/default/tftpd-hpa and adding "-v" to the TFTP_OPTIONS option. It can also be useful to watch tcpdump to see the requests and responses, for example (10.1.0.203 is the IP of the RPi I'm working with):

  tcpdump -n -i eth0 host 10.1.0.203 and dst port 69

This was able to tell me the serial number of my RPi, so I made a directory in my tftpboot directory with the same serial number and copied all the boot files into there. I then found that I had to remove the init= portion from the cmdline.txt file I'm using. To ease debugging I also removed quiet. So, my current cmdline.txt contains (newlines entered for clarity, but the file has it all on one line):

idwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/nfs
nfsroot=10.1.0.253:/data/diskless/raspbian-lite-base-root,vers=3,rsize=1462,wsize=1462
ip=dhcp elevator=deadline rootwait hostname=rpi.etc.gen.nz

NFS root

You'll need to export the directories you created via NFS. My exports file has these lines:

/data/diskless/raspbian-lite-base-root	10.1.0.0/24(rw,no_root_squash,sync,no_subtree_check)
/data/diskless/raspbian-lite-base-boot	10.1.0.0/24(rw,no_root_squash,sync,no_subtree_check)

And you'll also want to make sure you're mounting those correctly during boot, so I have in /data/diskless/raspbian-lite-base-root/etc/fstab the following lines:

10.1.0.253:/data/diskless/raspbian-lite-base-root   /       nfs   rw,vers=3       0   0
10.1.0.253:/data/diskless/raspbian-lite-base-boot   /boot   nfs   vers=3,nolock   0   2

Network Booting

Now you can hopefully boot. Unless you into this bug, as I did. Where the RPi will sometimes fail to boot. Turns out the fix, which is mentioned on the bug report, is to put bootcode.bin (and only bootcode.bin) onto an SD card. That'll then load the fixed bootcode, and which will then boot reliably.

21 October 2016

Kristina Hoeppner

face

Getting the hang of hanging out (part 2)

A couple of days ago I experienced some some difficulties using YouTube Live Events. So today, I was all prepared:

  • Had my phone with me for 2-factor auth so I could log into my account on a second computer in order to paste links into the chat;
  • Prepared a document with all the links I wanted to paste;
  • Had the Hangout on my presenter computer running well ahead of time.

Indeed, I was done with my prep so much in advance that I had heaps of time and thus wanted to pause the broadcast as it looked like it was not actually broadcasting since I couldn’t see anything on the screen. So I thought I needed to adjust the broadcast’s start time.

Hence why I stopped the broadcast and as soon as I hit the button I knew I shouldn’t have. Stopping the broadcast doesn’t pause it, but stops it and kicks off the publishing process.

Yep, I panicked. I had about 10 minutes to go to my session and nobody could actually join it. Scrambling for a solution, I quickly set up another live event, tweeted the link and also sent it out to the Google+ group.

Then I changed the title of the just ended broadcast to something along the lines of “Go to description for new link”, put the link to the new stream into the description field and also in the chat as I had no other way of letting people know where I had gone and how they could join me.

I was so relieved when people showed up in the new event. That’s when the panic subsided, and I still had about 3 minutes to spare to the start of the session.

The good news? We released Mahara 16.10 and Mahara Mobile today (though actually, we soft-launched the app on the Google Play store already yesterday to ensure that it was live for today).

24 July 2016

Andrew Ruthven

Allow forwarding from VoiceMail to cellphones

Something I've been wanting to do with our Asterisk PBX at Catalyst for a while is to allow having callers that hit VoiceMail to be forwarded the callee's cellphone if allowed. As part of an Asterisk migration we're currently carrying out I finally decided to investigate what is involved. One of the nice things about the VoiceMail application in Asterisk is that callers can hit 0 for the operator, or * for some other purpose. I decided to use * for this purpose.

I'm going to assume a working knowledge of Asterisk dial plans, and I'm not going to try and explain how it works. Sorry.

When a caller hits * the VoiceMail application exits and looks for a rule that matches a. Now, the simple approach looks like this within our macro for handling standard extensions:

[macro-stdexten]
...
exten => a,1,Goto(pstn,027xxx,1)
...

(Where I have a context called pstn for placing calls out to the PSTN).

This'll work, but anyone who hits * will be forwarded to my cellphone. Not what I want. Instead we need to get the dialled extension into a place where we can perform extension matching on it. So instead we'll have this (the extension is passed into macro-stdexten as the first variable - ARG1):

[macro-stdexten]
...
exten => a,1,Goto(vmfwd,${ARG1},1)
...

Then we can create a new context called vmfwd with extension matching (my extension is 7231):

[vmfwd]
exten => 7231,1,Goto(pstn,027xxx,1)

I actually have a bit more in there to do some logging and set the caller ID to something our SIP provider will accept, but you get the gist of it. All I need to do is to arrange for a rule per extension that is allowed to have their VoiceMail callers be forwarded to voicemail. Fortunately I have that part automated.

The only catch is for extensions that aren't allowed to be forwarded to a cellphone. If someone calling their VoiceMail hits * their call will be hung up and I get nasty log messages about no rule for them. How do we handle them? Well, we send them back to VoiceMail. In the vmfwd context we add a rule like this:

exten => _XXXX,1,VoiceMail(${EXTEN}@sip,${voicemail_option})
  same => n,Hangup

So any extension that isn't otherwise matched hits this rule. We use ${voicemail_option} so that we can use the same mode as was used previously.

Easy! Naturally this approach won't work for other people trying to do this, but given I couldn't find write ups on how to do this, I thought it be might be useful to others.

Here's my macro-stdexten and vmfwd in full:

[macro-stdexten]
exten => s,1,Progress()
exten => s,n,Dial(${ARG2},20)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Answer
exten => s-NOANSWER,n,Wait(1)
exten => s-NOANSWER,n,Set(voicemail_option=u)
exten => s-NOANSWER,n,Voicemail(${ARG1}@sip,u)
exten => s-NOANSWER,n,Hangup
exten => s-BUSY,1,Answer
exten => s-BUSY,n,Wait(1)
exten => s-BUSY,n,Set(voicemail_option=b)
exten => s-BUSY,n,Voicemail(${ARG1}@sip,b)
exten => s-BUSY,n,Hangup
exten => _s-.,1,Goto(s-NOANSWER,1)
exten => a,1,Goto(vmfwd,${ARG1},1)
exten => o,1,Macro(operator)

[vmfwd]

exten => _XXXX,1,VoiceMail(${EXTEN}@sip,${voicemail_option})
  same => n,Hangup

#include extensions-vmfwd-auto.conf

And I then build extensions-vmfwd-auto.conf from a script that is used to generate configuration files for defining accounts, other dial plan rule entries and phone provisioning files.

With thanks to John Kiniston for the suggestion about the wildcard entry in vmfwd.

25 August 2014

Dan Marsden

SCORM hot topics.

As a follow up from the GSOC post I thought it might be useful to mention a few things happening with SCORM at the moment.

There are currently approx 71 open issues related to SCORM in the Moodle tracker at the moment, of those 38 are classed as bugs/issues I should fix in stable branches at some point, 33 are issues that are really feature/improvement requests.

Issues about to be fixed and under development
MDL-46639 – External AICC packages not working correctly.
MDL-44548 – SCORM Repository auto-update not working.

Issues that are  high in my list of things to look at and I hope to look at sometime soon.
MDL-46961 – SCORM player not launching in Firefox when new window being used.
MDL-46782 – Re-entry of a scorm not using suspend_data or resuming itself should allow returning to the first sco that is not complete.
MDL-45949 – The TOC Tree isn’t quite working as it should after our conversion to YUI3 – it isn’t expanding/collapsing in a logical manner – could be a bit of work here to make this work in the right way.

Issues recently fixed in stable releases.
MDL-46940 – new window option not working when preview mode disabled.
MDL-46236 – Start new attempt option ignored if new window used.
MDL-45726 – incorrect handling of review mode.

New improvements you might not have noticed in 2.8 (not released yet)
MDL-35870 -Performance improvements to SCORM
MDL-37401 -SCORM auto-commit – allows Moodle to save data periodically even if the SCORM doesn’t call “commit”

New improvements you might not have noticed in 2.7:
MDL-28261 -Check for live internet connectivity while using SCORM – warns user if SCORM is unable to communicate with the LMS.
MDL-41476 – The SCORM spec defines a small amount of data that can be stored when using SCORM 1.2 packages, we have added a setting that allows you to disable this restriction within Moodle to allow larger amounts of data to be stored (you may need to modify your SCORM package to send more data to make this work.)

Thanks to Ian Wild, Martin Holden, Tony O’Neill, Peter Bowen, André Mendes, Matteo Scaramuccia, Ray Morris, Vignesh, Hansen Ler, Faisal Kaleem and many other people who have helped report/test and suggest fixes related to SCORM recently including the Moodle HQ Integration team (Eloy, Sam, Marina, Dan, Damyon, Rajesh) who have all been on the receiving end of reviewing some SCORM patches recently!

GSOC 2014 update

Another year of GSOC has just finished and Vignesh has done a great job helping us to improve a number of areas of SCORM!
I’m really glad to finally have some changes made to the JavaScript datamodel files as part of MDL-35870 – I’m hoping this will improve the performance of the SCORM player as the JavaScript can now be cached properly by the users browser rather than dynamically generating it using PHP.

Vignesh has made a number of general bug fixes to the SCORM code and has also tidied up the code in the 2.8 branch so that it now complies with Moodle’s coding guidelines.

These changes have involved almost every single file in the SCORM module and significant architectural changes have been made. We’ve done our best to avoid regresssions (thanks Ray for testing SCORM 2004) but due to the large number of changes (and the fact that we only have 1 behat test for SCORM) It would be really great if people could test the 2.8 branch with their SCORM content before release so we can pick up any other regressions that may have occurred.

Thanks heaps to Vignesh for his hard work on SCORM during GSOC – and kudos to Google for running a great program and providing the funding to help it happen!

10 July 2014

Dan Marsden

Goodbye Turnitin…

Time to say goodbye to the “Dan Marsden Turnitin plugin”… well almost!

Turnitin have done a pretty good job of developing a new plugin to replace the code that I have been working on since Moodle 1.5!

The new version of their plugin contains 3 components:

  1. A module (called turnitintool2) which contains the majority of the code for connecting to their new API and is a self-contained activity like their old “turnitintool” plugin
  2. A replacement plugin for mine (plagiarism_turnitin) which allows you to use plagiarism features within the existing Moodle Assignment, Workshop and forum modules.
  3. A new Moodle block that works with both the above plugins.

The Moodle.org Plugins database entry has been updated to replace my old code with the latest version from Turnitin, we have a number of clients at Catalyst using the new plugin and the migration has mostly gone ok so far – there are a few minor differences between my plugin and the new version from Turnitin so I encourage everyone to test the upgrade to the new version before running it on their production sites.

I’m encouraging most of our clients to update to the new plugin at the end of this year but I will continue to provide basic support for my version running on all Moodle versions up to Moodle 2.7 and my code continues to be available from my github repository here:
https://github.com/danmarsden/moodle-plagiarism_turnitin

Thanks to everyone who has helped in the past with the plugin I wrote – hopefully this new version from Turnitin will meet everyone’s needs!

31 October 2012

Chris Cormack

Signoff statistics for October 2012

Here are the signoff statistics for bugs in October 2012
  • Kyle M Hall- 24
  • Owen Leonard- 18
  • Chris Cormack- 15
  • Nicole C. Engard- 10
  • Mirko Tietgen- 9
  • Marc Véron- 6
  • Frédéric Demians- 5
  • Jared Camins-Esakov- 5
  • Magnus Enger- 4
  • Jonathan Druart- 4
  • M. de Rooy- 3
  • Melia Meggs- 3
  • wajasu- 2
  • Paul Poulain- 2
  • Fridolyn SOMERS- 2
  • Tomás Cohen Arazi- 2
  • Matthias Meusburger- 1
  • Katrin Fischer- 1
  • Julian Maurice- 1
  • Koha Team Lyon 3- 1
  • Mason James- 1
  • Elliott Davis- 1
  • mathieu saby- 1
  • Robin Sheat- 1

16 October 2012

Chris Cormack

Unsung heroes of Koha 26 – The Ada Lovelace Day Edition

Darla Grediagin

Darla has been using Koha from 2006, for the Bering Strait School District in Alaska. This is pretty neat in itself, what is cooler is that as far as I know, they have never had a ‘Support Contract’. Doing things either by themselves or with the help of IT personnel as needed. One of Darla’s first blogposts that I read was about her struggles trying to install Debian on an Emac. I totally respect anyone who is trying to reclaim hardware from the darkside 🙂

Darla has presented on Koha at conferences, and maintains a blog that has useful information, including sections of what she would do differently. As well as some nice feel good bits like this, from April 2007

I know I had an entry titled this before, but I do love OSS programs.   Yesterday I mentioned that I would look at Pines because I like the tool it has to merge MARC records.  Today a Koha developer emailed me to let me know that he is working on this for Koha and it should be available soon.  I can’t imagine getting that kind of service from a vendor.

Hopefully she will be able to make it Kohacon13 in Reno, NV. It would be great to put a face to the email address 🙂

10 October 2012

Chris Cormack

New Release team for Koha 3.12

Last night on IRC the Koha Community elected a new release team, for the 3.12 release. Once again it is a nicely mixed team, there are 16 people involved, from  8 different countries (India, New Zealand, USA, Norway, Germany, France, Netherlands, Switzerland) and four of the 12 roles are filled by women.

The release team will be working super hard to bring you the best release of Koha yet, and you can help:

  • Reporting bugs
  • Testing bug fixes
  • Writing up enhancement requests
  • Using Koha
  • Sending cookies
  • Inventing time travel
  • Killing MARC
  • Winning the lottery and donating the proceeds to the trust to use for Koha work.

24 July 2012

Pass the Source

Google Recruiting

So, Google are recruiting again. From the open source community, obviously. It’s where to find all the good developers.

Here’s the suggestion I made on how they can really get in front of FOSS developers:

Hi [name]

Just a quick note to thank you for getting in touch of so many our
Catalyst IT staff, both here and in Australia, with job offers. It comes
across as a real compliment to our company that the folks that work here
are considered worthy of Google’s attention.

One thing about most of our staff is that they *love* open source. Can I
suggest, therefore, that one of the best ways for Google to demonstrate
its commitment to FOSS and FOSS developers this year would be to be a
sponsor of the NZ Open Source Awards. These have been very successful at
celebrating and recognising the achievements of FOSS developers,
projects and users. This year there is even an “Open Science” category.

Google has been a past sponsor of the event and it would be good to see
you commit to it again.

For more information see:

http://www.nzosa.org.nz/

Many thanks
Don

09 July 2012

Andrew Caudwell

Inventing On Principle Applied to Shader Editing

Recently I have been playing around with GLSL Sanbox (github), a what-you-see-is-what-you-get shader editor that runs in any WebGL capable browser (such as Firefox, Chrome and Safari). It gives you a transparent editor pane in the foreground and the resulting compiled fragment shader rendered behind it. Code is recompiled dynamically as the code changes. The latest version even has syntax and error highlighting, even bracket matching.

There have been a few other Webgl based shader editors like this in the past such as Shader Toy by Iñigo Quílez (aka IQ of Demo Scene group RGBA) and his more recent (though I believe unpublished) editor used in his fascinating live coding videos.

Finished compositions are published to a gallery with the source code attached, and can be ‘forked’ to create additional works. Generally the author will leave their twitter account name in the source code.

I have been trying to get to grips with some more advanced raycasting concepts, and being able to code something up in sandbox and see the effect of every change is immensely useful.

Below are a bunch of my GLSL sandbox creations (batman symbol added by @emackey):

    

    

GLSL Sandbox is just the latest example of the merit of software development tools that provide immediate feedback, and highlights the major advantages of scripting languages have over heavy compiled languages with long build and linking times that make experimentation costly and tedious. Inventing on Principle, a presentation by Bret Victor, is a great introduction to this topic.

I would really like a save draft button that saves shaders locally so I have some place to save things that are a work in progress, I might have to look at how I can add this.

Update: Fixed links to point at glslsandbox.com.

05 June 2012

Pass the Source

Wellington City Council Verbal Submission

I made the following submission on the Council’s Draft Long Term Plan. Some of this related to FLOSS. This was a 3 minute slot with 2 minutes for questions from the councillors.

Introduction

I have been a Wellington inhabitant for 22 years and am a business owner. We employ about 140 staff in Wellington, with offices in Christchurch, Sydney, Brisbane and the UK. I am also co-chair of NZRise which represents NZ owned IT businesses.

I have 3 Points to make in 3 minutes.

1. The Long Term plan lacks vision and is a plan for stagnation and erosion

It focuses on selling assets, such as community halls and council operations and postponing investments. On reducing public services such as libraries and museums and increasing user costs. This will not create a city where “talent wants to live”. With this plan who would have thought the citizens of the city had elected a Green Mayor?

Money speaks louder than words. Both borrowing levels and proposed rate increases are minimal and show a lack of investment in the city, its inhabitants and our future.

My company is about to open an office in Auckland. A manager was recently surveying staff about team allocation and noted, as an aside, that between 10 and 20 Wellington staff would move to Auckland given the opportunity. We are not simply competing with Australia for hearts and minds, we are competing with Auckland whose plans for investment are much higher than our own.

2. Show faith in local companies

The best way to encourage economic growth is to show faith in the talent that actually lives here and pays your rates. This means making sure the council staff have a strong direction and mandate to procure locally. In particular the procurement process needs to be overhauled to make sure it does not exclude SME’s (our backbone) from bidding for work (see this NZCS story). It needs to be streamlined, transparent and efficient.

A way of achieving local company participation in this is through disaggregation – the breaking up large-scale initiatives into smaller, more manageable components. For the following reasons:

  • It improves project success rates, which helps the public sector be more effective.
  • It reduces project cost, which benefits the taxpayers.
  • It invites small business, which stimulates the economy.

3. Smart cities are open source cities

Use open source software as the default.

It has been clear for a long time that open source software is the most cost effective way to deliver IT services. It works for Amazon, Facebook, Red Hat and Google and just about every major Silicon Valley success since the advent of the internet. Open source drives the internet and these companies because it has an infinitely scalable licensing and model – free. Studies, such as the one I have here from the London School of Economics, show the cost effectiveness and innovation that comes with open source.

It pains me to hear about proposals to save money by reducing libraries hours and increasing fees, when the amount of money being saved is less than the annual software licence fees our libraries pay, when world beating free alternatives exist.

This has to change, looking round the globe it is the visionary and successful local councils that are mandating the use of FLOSS, from Munich to Vancouver to Raleigh NC to Paris to San Francisco.

As well as saving money, open source brings a state of mind. That is:

  • Willingness to share and collaborate
  • Willingness to receive information
  • The right attitude to be innovative, creative, and try new things

Thank you. There should now be 2 minutes left for questions.

05 January 2012

Pass the Source

The Real Tablet Wars

tl;dr formally known as Executive Summary, Openness + Good Taste Wins

Gosh, it’s been a while. But this site is not dead. Just been distracted by indenti.ca and twitter.

I was going to write about Apple, again. A result of unexpected and unwelcome exposure to an iPad over the Christmas Holidays. But then I read Jethro Carr’s excellent post where he describes trying to build the Android OS from Google’s open source code base. He quite mercilessly exposes the lack of “open” in some key areas of that platform.

It is more useful to look at the topic as an issue of “open” vs “closed” where iPad is one example of the latter. But, increasingly, Android platforms are beginning to display similar inane closed attributes – to the disadvantage of users.

Part of my summer break was spent helping out at the premier junior sailing regatta in the world, this year held in Napier, NZ. Catalyst, as a sponsor, has built and is hosting the official website.

I had expected to swan around, sunbathing, drinking cocktails and soaking up some atmosphere. Instead a last minute request for a new “live” blogging section had me blundering around Joomla and all sorts of other technology with which I am happily unfamiliar. Days and nightmares of iPads, Windows, wireless hotspots and offshore GSM coverage.

The plan was simple, the specialist blogger, himself a world renown sailor, would take his tablet device out on the water on the spectator boat. From there he would watch and blog starts, racing, finishes and anguished reactions from parents (if there is one thing that unites races and nationalities, it is parental anguish over sporting achievement).

We had a problem in that the web browser on the tablet didn’t work with the web based text editor used in the Joomla CMS. That had me scurrying around for a replacement to the tinyMCE plugin, just the most common browser based editing tool. But a quick scan around various forums showed me that the alternative editors were not a solution and that the real issue was a bug with the client browser.

“No problem”, I thought. “Let’s install Firefox, I know that works”.

But no, Firefox is not available to iPad users  and Apple likes to “protect” its users by only tightly controlling whose applications are allowed to run on the tablet. Ok, what about Chrome? Same deal. You *have* to use Apple’s own buggy browser, it’s for your own good.

Someone suggested that the iPad’s operating system we were using needed upgrading and the new version might have a fixed browser. No, we couldn’t do that because we didn’t have Apple’s music playing software, iTunes, on a PC. Fortunately Vodafone were also a sponsor and not only did they download an upgrade they had iTunes handy. Only problem, the upgrade wiped all the apps that our blogger and his family had previously bought and installed.

Er, and the upgrade failed to fix the problem. One day gone.

So a laptop was press ganged into action, which, in the end was a blessing because other trials later showed that typing blogs fast, on an ocean swell, is very hard without a real keyboard. All those people pushing tablets at schools, keep in mind it is good to have our children *write* stuff, often.

The point of this post is not really to bag Apple, but to bag the mentality that stops people using their own devices in ways that help them through the day. I only wanted to try a different browser to Safari, not an unusual thing to do. Someone else might want to try out a useful little application a friend has written for them, but that wouldn’t be allowed.

But the worst aspect of this is that because of Apple’s success in creating well designed gadgets other companies have decided that “closed” is also the correct approach to take with their products. This is crazy. It was an open platform, Linux Kernel with Android, that allowed them to compete with Apple in the first place and there is no doubt that when given a choice, choice is what people want – assuming “taste” requirements are met.

Other things being equal*, who is going to chose a platform where the company that sold you a neat little gadget controls all the things you do on it? But there is a strong trend by manufacturers such as Samsung, and even Linux distributions, such asUbuntu, to start placing restrictions on their clients and users. To decide for all of us how we should behave and operate *our* equipment.

The explosive success of the personal computer was that it was *personal*. It was your own productivity, life enhancing device. And the explosive success of DOS and Windows was that, with some notable exceptions, Microsoft didn’t try and stop users installing third party applications. The dance monkey boy video is funny, but the truth is that Microsoft did want “developers, developers, developers, developers” using its platforms because, at the time, it knew it didn’t know everything.

Apple, Android handset manufacturers and even Canonical (Ubuntu) are falling into the trap of not knowing that there is stuff they don’t know and they will probably never know. Similar charges are now being made about Facebook and Twitter. The really useful devices and software will be coming from companies and individuals who realise that whilst most of what we all do is the same as what everyone else does, it is the stuff that we do differently that makes us unique and that we need to control and manage for ourselves. Allow us do that, with taste, and you’ll be a winner.

PS I should also say “thanks” fellow sponsors Chris Devine and Devine Computing for just making stuff work.

* I know all is not equal. Apple’s competitive advantage it “has taste” but not in its restrictions.

18 May 2011

Andrew Caudwell

Show Your True Colours

This last week saw the release of fairly significant update to Gource – replacing the out dated, 3DFX-era rendering code, with something a bit more modern, utilizing more recent OpenGL features like GLSL pixel shaders and VBOs.

A lot of the improvements are under the hood, but the first thing you’ll probably notice is the elimination of banding artifacts in Bloom, the illuminated fog Gource places around directories. This effect is pretty tough on the ‘colour space’ of so called Truecolor, the maximum colour depth on consumer monitors and display devices, which provides 256 different shades of grey to play with.

When you render a gradient across the screen, there are 3 or 4 times more pixels than there are shades of each colour, producing visible ‘bands’ of the same shade. If multiple gradients like this get blended together, as happens with bloom, you simply run out of ‘in between’ colours and the issue becomes more exaggerated, as seen below (contrast adjusted for emphasis):

        

Those aren’t compression artifacts you’re seeing!

Gource now uses colour diffusion to combat this problem. Instead of sampling the exact gradient of bloom for the distance of a pixel from the centre of a directory, we take a fuzzy sample in that vicinity instead. When zoomed in, you can see the picture is now slightly noisy, but the banding is completely eliminated. Viewed at the intended resolution, you can’t really see the trickery going on – in fact the effect even seems somewhat more natural, a bit closer to how light bouncing off particles of mist would actually behave.

        

The other improvement is speed – everything is now drawn with VBOs, large batches of objects geometry passed to the GPU in as few shipments as possible, eliminating CPU and IO bottle necks. Shadows cast by files and users are now done in a second pass on GPU using the same geometry as used for the lit pass – making them really cheap compared to before when we effectively wore the cost of having to draw the whole scene twice.

Text is now drawn in single pass, including shadows, using some fragment shader magic (take two samples of the font texture, offset by 1-by-1 pixels, blend appropriately). Given the ridiculous amount of file, user and directory names Gource draws at once with some projects (Linux Kernel Git import commit, I’m looking at you), doing half as much work there makes a big difference.

06 October 2010

Andrew Caudwell

New Zealand Open Source Awards

I discovered today that Gource is a finalist in the Contributor category for the NZOSA awards. Exciting stuff! A full list of nominations is here.

I’m currently taking a working holiday to make some progress on a short film presentation of Gource for the Onward!.

Update: here’s the video presented at Onward!:

Craig Anslow presented the video on my behalf (thanks again Craig!), and we did a short Q/A over Skype afterwards. The music in the video is Aksjomat przemijania (Axiom of going by) by Dieter Werner. I suggest checking out his other work!