Pep easing onto PrimaryWall

I just enabled Pep easing on the open source version of PrimaryWall. Easing is basically where the notes decellerate into place, making them have a much smoother move across the screen.

Using pep meant I can remove jquery UI which is a really overweight framework to include so hopefully page load will be faster too 🙂 Over the next few months I will be optimizing page load and including more bug monitoring and hopefully updating the PrimaryWall.com version.

Enjoy 🙂

Unable to reproduce TypeError: ‘undefined’ is not an object

Google Analytics shows that ~12% of our total users are affected by a Javascript bug of:

TypeError: 'undefined' is not an object

90% of the browsers are Safari 7534.48.3, 10% are Mozilla compatible agent. 75% of the errors come from iPhones, 23% from iPads. 1% from Macintosh, the other 2% is from iPod etc. None of the devices run Linux or Windows.

I have tried enabling debug mode in safari on both an iPhone and iPad but not able to reproduce the bug.

Here is a link to a page Google Analytics claims is showing the error. If anyone can consistently reproduce the error here I will be super happy because just a line number would be enough to get me started debugging.

Update: TypeError: ‘undefined’ is not an object (evaluating ‘safari.self.tab.canLoad’)

Managed to get that out of it once when clicking around, mostly on an iphone whilst clicking “Change country..”

Update: Solved this by making sure the element was available in the dom. Turns out the ajax call on success was trying to write to an element that wasn’t available.

Send Javascript client errors to Google Analytics

Not sure how well this will catch errors before onready but as a quick fix seems to work okay.

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-19303815-1']);
  _gaq.push(['_setDomainName', '.etherpad.org']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

  /* Google Analytics error catching */
  window.onerror = function(message, file, lineNumber) {
    _gaq.push([
     '_trackEvent',
     'error',
     file + ':' + lineNumber,
     message + ''
    ]);
  };

Don’t forget to replace the UA-part with your own code…

Our Employment Tribunal story

Roughly a year ago a former employee resigned from Primary Technology without giving any notice. The next day, two schools confirmed that they would no longer be requiring our services, and had changed to a new provider. It became evident in the hand-over process that our former employee was now working for the new provider at the same two schools.

The employee had decided that he could not work his 30 day notice period and also would not communicate with us. In response, Primary Technology sent the employee a letter reminding him of his contractual obligations and asked him to re-consider opening communications with us.

The employee sadly did not re-consider and instead, one month later, initiated employment tribunal proceedings on the grounds of constructive dismisal. At this point he became the “Ex employee”.

Given that we had been accused of constructive dismisal, we decided to seek legal council. I don’t want to go into too much detail about how we used legal council and the approaches used, but it was safe to say that in my opinion the whole case was not handled very professionally. For example, the Ex Employee’s solicitor neglected to mention that the Ex Employee had actually stopped using their services some time before the tribunal hearing, despite the solicitor being duty bound to do so.

We arrived early and fully prepared for our tribunal case. Our legal team and senior managers were eager to hear the truth, myself especially because I was the main target of the accusations.

10AM came and went. At 10.30, we went into the chamber but our opposite hadn’t turned up; neither had his legal representation (we had the delay because the tribunal secretary had spent 30 minutes calling all the contact details available for the Ex Employee and his solicitor).

The case was dismissed with no orders for costs meaning Primary Technology were considerably out of pocket due to legal fees and time wasted. Unfortunately the truth was never investigated

So here it is, evidence that we went through the process only to be dissapointed that we didn’t have our long-awaited day in the tribunal courts.

We believe in transparency as default in Primary Technology and public records often aid us in fulfilling this so with that in mind here is a copy of the public documents that was published from the tribunal.