Category Archives: Technology

Posts related to technology in general.

Bug, fixed: holding down the Enter key while editing project descriptions

Thanks to one of our long-standing Kerika users (over in Gdansk, Poland) for spotting a bug that we have fixed: if you held down the Enter key for “too long” (which is kind of a vague description, we know) while editing a card’s description, some junky HTML text would appear:

Card description bug
Card description bug

 

It was an odd timing issue that we hadn’t noticed before. Thanks for helping us find this bug!

You can now Copy and Paste Lines

In a recent update, we added a minor new feature: you can now copy and paste lines even if they are not used to connect any other objects on a Kerika Whiteboard.

We always let you copy and paste lines that were used to connect other objects, like in this scenario:

Copying objects connected by a line
Copying objects connected by a line

 

But now you can also copy and paste freestanding lines (i.e. lines that are not anchored at either end on anything else), like this:

Copying a freestanding line
Copying a freestanding line

 

The fact that copying/pasting freestanding lines was not possible before was actually a conscious design decision on our part, but looking back we can’t figure out why it seemed like a good idea at the time :-/

Bug, fixed: Confirmation emails were not working correctly

Our thanks to Larry Smith from EduTone who initially alerted us to a bug in the process of signing up as a Kerika user: the confirmation email sent by Kerika wasn’t working well, particularly if the user used any browser other than Chrome.

For example, clicking on the confirmation email and having Kerika open that link using Firefox or Chrome produced this kind of behavior:

Safari problem

The problem was related to a recent decision we made to use Polymer for parts of our website.

It turns out that Chrome had a different sequence for loading the Polymer components than other browsers.

In Chrome the sequence is

  1. webcomponent-lite.js
  2. element.vulcanized.html
  3. build.min.js
While in browsers like Firefox the sequence is
  1. webcomponent-lite.js
  2. build.min.js
  3. element.vulcanized.html

Our build.min.js file needed components that were loaded only when element.vulcanized.html was loaded, which meant that the sequence in which these files were loaded by the browser was important, andΒ  different browsers were loading these files in different sequences.

We fixed this bug: Polymer has a method to ensure that all imports are ready before the page is rendered.

This has been part of the learning process for us as we adopt Polymer more for our website redesign (which is underway, and should be unveiled by Christmas), and also consider using Polymer to rebuild the Kerika app itself!

Bug, fixed: sometimes email replies to chat weren’t working

(Thanks to our users in the Washington Professional Educator Standards Board for helping us find this bug.)

We recently discovered a rather quirky bug that was causing some chat, when replied to as emails by the recipient, to not get sent properly.

Here’s what is supposed to happen, and what went wrong:

  • If you are assigned a card, on a Task Board or Scrum Board, you will get email pushed to you whenever any other Team Member (or Board Admin) chats on that card. This helps you stay in the loop on the most important items on a project board: the ones you are currently assigned to do.

    (Board Admins have the option of getting all chat, on all cards on the board that they manage, pushed to them as emails, if they want to really be in the loop with every conversation that is going on in the board.)

  • When chat gets pushed to you as email, it shows up looking just like regular email, and you can reply to it wherever you are dealing with your email: your desktop, laptop or mobile device.
  • When you click on the “Reply” button in your email client, Kerika automatically changes the address for that reply to be the URL that points to the specific card (or canvas) that’s being referenced in the chat.

    Here’s an example of chat email:

    Chat example
    Chat example

    And what clicking on the Reply button does:

    Replying to Chat Email
    Replying to Chat Email

    In the above example, although the chat email came from Cheryl, the reply is being sent to a special address:
    “Card-nj3j@kerikamail.com>”

  • This email is received by a server that listens only to chat replies. When a chat reply is received by the server, it checks to see who the reply came from.
  • Since only Team Members and Board Admins are allowed to participate in the chat on a particular board, the Kerika chat server tries to make sure the email is coming from someone who is authorized to comment on that particular card or canvas.

    (This helps reduce the possibility of spam email appearing inside your Kerika conversations.)

The problem we found is that some email clients, e.g. the native Mac Mail client, handled the “From:” and “Sender:” fields differently from other email clients like Gmail.

In the case of Gmail, Google places fills in both the From and Sender fields, but in the case of Mac Mail, only the From field is filled in.

For now, a temporary fix is to have the server look for both the From and Sender fields, but longer-term, as part of a server re-architecture that we are planning, this problem will get solved differently that further reduces the possibility of spam.

Google Apps last Friday

It looks like we were on the bleeding edge of Google’s problems last Friday (Oct 9): fairly early in the day, Pacific Time, we started seeing authentication failures from Google related to our Kerika+Google users.

The exceptions shown in the Kerika server logs were clearly pointing to problems on Google’s end:

Google Errors
Google Errors

 

What was a little frustrating for us — and our beloved users — was that Google itself didn’t seem to be acknowledging any problems until fairly late in the day:

Oct 9 Google Apps status
Oct 9 Google Apps status

By this time — almost noon, Pacific Time — dozens of Kerika users had been affected. We tried to let folks know via Twitter that there was a problem, and continued to monitor the situation through the day:

Google eventually acknowledged the problem as it became clear that it was widespread.

By mid-afternoon, the issue was largely cleared up, at least as far as Kerika was concerned, although it is possible that other apps, which also use Google for authentication or Google Drive for storage, were affected for much longer.

Once again, our apologies for everyone who was affected.

Google Authentication Errors

We are currently seeing a bunch of errors from Google with respect to their authentication service — which lets you login to your Kerika+Google account using your Google ID, and they seem to be affecting a wide range of users.

Here’s a sample of what we are seeing:

Google Errors
Google Errors

 

This error normally shows up when a user is logging in with a Google for Work ID, e.g. Google Apps for Business or Google Apps for Education.

What’s surprising today is that we have seen at least 1 user with a regular Gmail address have this same problem, which is theoretically impossible.

Right now there’s not much we can do but wait this out. The problem seems to be small enough that Google is not even reporting it on their Google Apps Status Dashboard. πŸ™

Bug, fixed: Team Members weren’t getting notification emails when they were assigned cards

Our thanks to Tatjana and Steve from Ducks Unlimited in Canada, who helped us track down a bug that was stopping notification emails being sent properly when a Team Member is assigned a card on a Task Board or Scrum Board.

(Board Admins were getting these emails when people’s assignments changed, but not the Team Members themselves.)

We fixed this with our latest release.

When you add an existing Google or Box file, we copy it into your Kerika folders

If you use the “file picker” that’s built into Kerika to add an existing Google Drive or Box file to a card, canvas or board — for a Task Board, Scrum Board or Whiteboard — you will see a message that says the file is being copied.

This is the file picker:

File picker
File picker

Clicking on the File Picker button brings up the File Picker dialog:

Using the Box file picker
Using the Box file picker

And this is the “copying…” message that’s shown.

Copying message
Copying message

So, what’s happening?

Well, Kerika stores all your Kerika-related files in a set of special folders within your Google Drive or Box account, if you are using Kerika+Google or Kerika+Box, and these are organized neatly into folders corresponding to each of your boards.

Here’s what the folders in your Box account look like (you can learn more by reading about how Kerika integrates with Box):

It’s a similar structure if you are using Kerika with Google:

Keeping all the Kerika files together in a set of related folders makes things cleaner for you: when you look at your Google Drive or Box Account, you know exactly what’s being used by Kerika, and what’s other stuff.

And this is why we make a copy of your existing Google Drive or Box file when you use the File Picker: it enables us to put a copy into your Kerika-specific folders, where it is easier to share with the rest of your project team.

Leaving chat, and then returning

When you are writing a chat message, on a card or canvas on any Kerika Task Board, Scrum Board or Whiteboard, what happens if you need to leave that message in the middle and go look at something else in Kerika?

For example, suppose you are in the middle of writing a chat message, but in order to complete it, you need to go off and look at another card’s details, or maybe a file attached somewhere else on the board?

You can leave aside a chat in mid-stream, go somewhere else in Kerika, return to the chat, and pick up where you left off!

That’s because Kerika uses your browser’s local cache storage to keep your unsent message: it means your changes aren’t lost while you go look at something else in Kerika.

This is a handy usability fix we have always had in Kerika, but it may be one that folks didn’t realize existed…

Well, now you know πŸ™‚

Amazon burped a little on the weekend

We use a number of Amazon Web Services, including one called Simple Queue Service which Kerika uses to handle communications between our main project database server and a separate server that handles the Search function.

  • As with all search engines, Kerika’s Solr engine does a full indexing of the database only once: when the database is rebuilt for any reason (which happens very rarely), and after that it does incremental indexing which means that it only looks at changes made to individual boards, cards, and canvases.
  • Using a queue helps us manage the load of traffic going to the search engine server: in the unlikely event that a lot of people make a lot of updates to their Kerika boards at the same time, Solr won’t get overwhelmed with a sudden burst of new indexing.
  • There are lots of ways to implement queues in software — in fact, studying queuing theory is a standard course in all computer science programs — and at this point most apps, like Kerika, prefer not re-invent that particular wheel: instead, it is more cost-effective to use some standard queuing facility that’s available as part of the underlying platform.

AWS works very well in our opinion — it has very high reliability across most of its services — but like all software, it isn’t entirely infallible.

Over the weekend we observed a small handful of errors in our services logs where it looked like SQS had a temporary problem.

We cross-checked this time period with other activity on Kerika, and determined that about 7 Kerika boards may have been affected: not in terms of any data loss or corruption on the board itself, but in terms of some changes not being updated in the search index.

Now, 7 boards is a tiny portion of the entire Kerika project database, which numbers in the hundreds of thousands of boards, but we are glad to have spotted the potential for trouble and have re-indexed the data on these particular boards.

If we did our job well, no one will notice.