Tag Archives: Technology

Tripped up by an unkept Promise

As you know, Kerika is a Web Application: everything runs inside a browser, without the need for any plug-ins or add-ons.

We achieve all this with a ton of JavaScript code (and a sprinkle of SVG, for our Whiteboards.)

One, significant, disadvantage of JavaScript is that it is “single threaded”: two bits of script cannot run at the same time; they have to run one after another.

So while Kerika is running inside a browser on your laptop, our JavaScript has to share a thread with lots of other stuff that’s going on, such as painting, updating styles, and handling user actions.  All of this has the potential to slow down Kerika, while the JavaScript code waits for something else to finish.

To get around this, we used JavaScript’s Promise function: this let Kerika’s code get going with its normal business while waiting for other browser functions to finish.  What we didn’t expect, however, was that the Promise function isn’t supported by Internet Explorer 11. (Although it is supported in Microsoft’s Edge browser.)

This caused problems for all of our Internet Explorer 11 users — people using Chrome, Safari, Firefox or Edge were unaffected.  We finally figured out what the underlying problem was, and did a workaround using a polyfill, which is a way to provide new functionality in older browsers that don’t support it natively.

Technology strategy: a look back at 2015

A user from Mexico recently wrote to us asking which technologies we currently use for the Kerika software, since he was in the early days of planning his own ERP product and was impressed with the overall speed and responsiveness of Kerika.

The question was hard to answer with a simple email in part because we use several technologies, and because we are in the middle of considering some significant changes for 2016.

So, here’s an overview of the current state, with a future blog post to talk about what we are planning to change in 2016…

Our own server software:

All of our server software is written in Java.  That’s has worked well for us:

  • We have a lot of in-house expertise with Java (and none with PHP, Ruby, etc.).
  • Java is usually one of the first languages to be supported by other platform companies that decide to publish their APIs.
  • There is a rich ecosystem of open-source code, well-written blog posts and other knowledge sources that help us get our work done.

Open-source server software:

We use a few, well-established open source technologies on the back-end of Kerika:

  • We use the CometD protocol to provide real-time updates from the server to the browser client. CometD essentially works like a long-poll method, allowing for real-time updates to be pushed continuously from the server to the client without the client having to make new requests.  We could, and probably should, switch over entirely to Web Sockets but there are still older browsers out there that don’t support Web Sockets. Hence, CometD.
  • We use SOLR for our search engine. SOLR is an implementation of the Lucene search technology pioneered over a decade ago by Doug Cutting who has since gone on to do other great work in the software industry. SOLR is widely used by some very large SaaS services like Salesforce.
  • We use Jetty for our web servers.  Jetty is part of the Apache open-source projects, and is a well-established, robust web server that hasn’t given us any trouble in a long while. 🙂
  • We use open-source OAuth for our direct signup.
  • We use the Java Spring and JBoss libraries for various features.
  • We use Log4J for error logging.
  • We use MySQL for our databases.

Platform Libraries

Given our close integration with Google and Box, we naturally use their Java SDK Libraries for authentication and file management.

We used to use Google Checkout, until Google yanked that service from the market (leaving us high-and-dry and more than a little pissed off…) as well as Google Contacts, until we realized this particular integration was scaring away potential users.

Client Software

All of our browser software is written in HTML5, which means a mix of (mostly) Javascript and (a little) SVG.

(Actually, the SVG is only used for the Whiteboards feature of Kerika. The rest is all Javascript and plain HTML.)

Open-source client software

The Javascript ecosystem is quite rich and well established, so there are a bunch of open source libraries we can make good use of:

  • JQuery is used a lot. A lot.
  • More recently, Backbone and Marionette have helped fill in the blanks left by JQuery.
  • The i18n.js library helps with internationalization, although we haven’t actually offered any language other than English so far, for the user interface.
  • Log4Javascript helps with error logging and debugging.
  • Bootstrap is used mainly for our website, to make it responsive on tablets and phones.

What changes in 2016?

Quite a lot, probably, but we haven’t finished doing our re-architecture planning.

For one thing, we are planning to use microservices a lot more to make our overall system architecture less monolithic, and we are also planning to use container technology to make deployments faster.

We might consider switching away from SOLR, which we never really mastered, to another search engine which we have more familiarity with, but haven’t made a decision on that either.

 

Getting psyched for 2016!

We have big plans for the next year, and, in fact, have been very busy through the holiday season as well working on our product roadmap.

2016 will involve a major rewrite of our software: first the back-end, to improve scalability and to also use newer technologies like containers that make for easier deployment, and then the front-end, which will make Kerika even easier to use — especially for people new to Kanban and Scrum.

2015 has been a great year for us: our registered users doubled, and so did the number of paying customers.

It has also been a great learning opportunity for us: we met in person or had long telephone conversations with a wide range of users and got an even better understanding of the problems we can address with our software.

What we have heard consistently from folks about why they like Kerika: “it provides really great functionality in a really simple system”.

Our focus on providing a simple, intuitive user interface rather than delivering raw power is winning people over.

As we plan our future roadmap, the key goals we want to achieve are:

  • Make Kerika easier for new users. “Power users” already love us, but we need to make Kerika even more accessible for people who are completely new to visual task management.
  • Avoid religion.  Too many of our competitors are dogmatic about how to implement Kanban or Scrum; we will continue to remain pragmatic and let people work the way they want, rather than insist that we know the only true path to project success.
  • Build solutions rather than tools. Some of our competitors focus on building as many buttons, “power-ups” and other bells and whistles. You know, because “if less is more, think how much more more could be…”  Our view is different: the smarter the system, the fewer the controls that need to be exposed and manipulated by the user.
  • First class mobile experience. We have not delivered this in the past.  To do this, we need to change our back-end and front-end infrastructure very signfiicantly, and we have made that financial commitment. Look for good stuff in 2016.
  • First class support, for all users. We get at least one unsolicited email every week from a user who is surprised by the level of support we provide, even to free or trial users.  We need to keep this up. (OK, so this has nothing to do with our product roadmap but we feel strongly about it so we thought we would emphasize this point…)

Thanks to all our users who have helped us grow so far. In a reversal of cards and gifts going from vendors to customers, here’s a lovely calendar and card we just got from one of our happy customers:

Calendar and card
Calendar and card

Attaching content to the board itself, not just to cards

We have added a new feature that should prove handy for a lot of folks: you can now add content — files from your laptop, images from your mobile or tablet, Web links from your Intranet or the Internet, or canvases — to a Task Board or Scrum Board itself.

If this sounds like something that was always there, maybe we need to say that differently: you used to have the ability to add content to a card, now you can add it to the board itself.

There are many situations we have encountered where we want to share content or a canvas with a team, but there wasn’t any obvious place to still it — no single card on the board that seemed like the right place to attach that content.

And that’s because the content we wanted to add was applicable across the entire board, not just relevant to a single card.

This was getting frustrating, so we decided to scratch our itch: a new button on the top-right area of your Kerika app will let you add files, Web links and canvases to the board itself:

Board Attachments
Board Attachments

This should make some of you as happy as it has made us!

UI tweak: removing the “Add member” button from card details

As part of our work on combining tags and colors, we have been cleaning up parts of the Kerika user interface that had minor inconsistencies.

One such inconsistency — in our view — was that you were able to add people to a project team from within the card details dialog itself:

Adding people to a team
Adding people to a team

This button has been there in Kerika for a very long time, but it doesn’t really make sense to have this capability within the card details dialog: it just isn’t the best place to decide to add someone to a project team.

Instead, in our new layout the Project Settings dialog consolidates all the board management in one place, including adding people to a team, changing someone’s role within a team, and removing someone from a team:

 

Yes, there is a “Kerika Blue”

We try to be consistent in our use of colors and shades throughout the application, although it is easy to slip up from version to version, particularly since we do so many releases a year.

One recent diversion we corrected was in the use of the color blue: we have a specific shade we call Kerika Blue (#0099CC) which is used to indicate the concept of “new”:

Kerika Blue
Kerika Blue

Kerika Blue is  more muted than the regular blue that you might find elsewhere: we generally try to keep our color scheme muted, so that the decoration of the Kerika app doesn’t compete with your data — after all, your data are far more important to you than anything we do in terms of decorating your screen 😉