Generating REST web services from PostgreSQL tables

By | Uncategorized

We’ve just released another open source project in github, a humble utility we’ve been using to generate and maintain data intensive rest endpoints that have a CRUD behavior on database tables.

It’s implemented in Java, and it generates:

  • Java Beans for tables.
  • JDBC based Data Access Objects to retrieve and execute commands on the PostgreSQL database.
  • Jersey 2.0 endpoint classes for each table.

The goal was to automate the creation of straight forward endpoints, and to separate data structures, and queries affected by changes in the database in base classes meant to be inherited, and updated regularly as the database evolves. So that, every time you make a change in the database, you just run the generation process and it updates all your related code.

All the generation is driven by templates files, with some ugly tokens for dynamically replacing content and at times for required pre processing of conditional logic.

The generation is based on metadata queried from the PostgreSQL database, but it could be extended to support other relational sources.

It generates Java code, but we are thinking about moving to node.js REST endpoint generation, in the near future. Suggestions and contributions in this sense are welcomed.

Check it out, and please do provide feedback!

A slack alternative that runs on a Raspberry Pi

By | Uncategorized

We’ve made available a docker image of our enterprise chat, task manager (and slack alternative) Kezmo. We used a Raspberry Pi 3 as our infrastructure benchmark for a fresh installation ready to support a small team and it works 🙂

So, what’s Kezmo?

Kezmo is an enterprise chat and team collaboration platform that can be customized and integrated to any system in your organization. It’s based on a small set of core concepts, which are: work spaces, conversations, containers, and container items. A workspace is a pocket of context to collaborate around any given subject. It can be a team, a project, an short term initiative, a client, you name it. Members can be invited to workspaces by it’s creator, where they can exchange conversations, documents, notes, tasks which are stored in workspace containers. The underlying design goal was to provide an intelligent way to store and categorize shared content by type,  attempting to overcome chat archeology whenever you need to go back and recall what was the agreement, link, or file shared at any time.

You can try the vanilla version from the cloud, or you can run it on premises. We implement white label versions of Kezmo, with custom content types, forms, and automations to integrate it into domain specific systems, in health, finance, and construction. If this could interest you let us know.

Where can I get it?

You can try the vanilla version from the cloud by signing up here, or your can try it in your own premises with the docker image we’ve recently released. We would really appreciate any feedback on the setup process.

Kezmo is finally available to the public

By | Uncategorized

We are proud to announce that Kezmo is finally available to the public.

Kezmo is an enterprise chat and collaboration tool for managing projects & teams. We believe one of the main problems with most enterprise chat tools is that everything is a message and after a couple of days of having a conversation with your team you forget what were the agreements, actionables and who owns what.  Kezmo is a slack alternative that enables enterprise conversations while providing means to easily transition to more actionable structures such as: tasks, issues, notes, etc, that have their own life cycle and tools to interact and manage them independently.

You can get started by registering online, and you can get the mobile clients available in the iOS app store, and in the Android play store.

We’d love to have your feedback.

How to create a Kanban board with jquery

By | Uncategorized

What is a Kanban board?

Kanban boards are a visual and intuitive way of laying out cards in a board, across different columns, in such a way that a team can collaborate in the management of a business process. Cards can be used to represent things that need to get done. This can mean an inventory item in a supply chain, or a task in the context of a project, or an issue that needs fixing in a product, or a client that needs to be visited. Kanban boards appeared in Japan as part of the Kanban system.

Kanban boards have become popular in software development, as part of agile methodologies that promote teams to focus on the work actively in progress as part of a sprint. Kanban boards are a very useful tool to visually represent knowledge about the state of the current activities. For instance cards representing tasks can go from a TODO state, to an In Progress, and then Done providing a very quick way to check on the status of each activity for the current sprint. Very useful in team management, and project management scenarios.

Prototyping a Kanban board with JQuery

As a proof of concept for our upcoming team and project management tool Kezmo I set out to prototype a Kanban board in such a way that would allow me to:

  • Display cards in four lists displayed vertically, corresponding to the following states: TODO, In Progress, Waiting for Verification, Done.
  • Drag and drop cards from one list to another, in such a way that when this happens an event is triggered that I can react to.
  • Add new cards to the initial backlog state.

If you are in a hurry and want to check how the end result works, you can check it out here. Try drag and dropping the list elements.

Starting point, basic html lists

So I started with an html like the following:

It looks something like the following image:

I styled the different lists with different backgrounds, and named the cards with different letters to make sure the elements are moving across columns. I also left the Done list empty to make sure the empty list scenario is also covered by the POC.

The question becomes then how to add behavior to this DOM structure so that users can move items from list to list.
After doing some JQuery research into draggable, and droppable interactions, I came across the sortable jQuery interaction, which can be configured to have connected lists. Awesome I thought! This covers points one and two, I just needed to confirm whether I would be able to listen to elements being dropped to be able to react to that event. Checking out the jQuery api documentation I could confirm it’s possible. I implemented a simple background color change on the item dropped event as a proof of concept.

I enabled the jQuery interactions with the following code:

With this I have requirements one and two covered. In order to add the ability to create new cards in the Kanban board I added an input text, and a button, with a corresponding jQuery click handler so that a new li element is added to the TODO list.

You can check the resulting html kanban board here, and the final html code here:

Conclusions & final thoughts

I was able to put this example running in very little time with jQuery. It seems to perform well in Chrome, and Safari while in Firefox the animation every now and then becomes a bit laggy as the number of cards in each column increases. HTML5 provides native support for drag and drop so there might be space to make a more efficient implementation doing without the jQuery layer, and assuming a bit more from the browser.

We are hiring

By | Uncategorized

It takes a great team to be able to create awesome software. We are in the process of putting such a team together.

We have open positions for programmers. Experience with Objective-C, or Android SDK are a plus.

If you think you have what it takes, send us an email to jobs [@]

We look forward to having you in our team!

We are OrangeLoops

By | Uncategorized

This is a story about a couple of passionate software developers that at some point during 2009 decided to join forces.

After developing enterprise information systems with Microsoft technologies for corporate clients for more than 10 years they started a software company attempting to leverage years of experience, and a desire to develop a product based business model.

That initial software house prospered. Thanks to an amazing team, a share of good timing, and a bit of luck the company delivered a winning product that achieved global recognition, to the point that it was acquired in 2011.

This is the second endeavor of the same team of founders.  A company focused in delivering mobile first products for the enterprise segment built on the same foundations, and fueled by the same desire to develop awesome software products for a global audience.

We are now OrangeLoops.