Every day, we are faced with a similar situation - ‘a blocker with some code or just something technical that has to do with delivering our task’. Gracefully, we surmount and proceed. Fast forward two weeks, we may not remember how we solved that problem. We see this play out everyday, even in our interaction with other developers. Why is this? Brain drain? Not necessarily. Because, we are more than just information stores, we tend not to remember how we beat the last challenge.

Imagine we have a means of documenting these blockers and how we resolved them. How productive would that make us, or even those we work with? As an organisation of technologists striving to meet everyday market demand, speed is essential; this is one way to optimise speed, for better productivity.

PS: What is a blocker? A blocker operational will be defined as something that hinders your output on a particular task, which is directly related to one or more of the technologies you are using. This ranges from language specific problems to deployment struggles, and a host of other things. Basically, just about anything that hinders delivery.

What it does

With Cognitio, we've found a way to enable developers save solutions to those tough blockers they experience while working and also share them with their team. Centralising team's knowledge increases productivity, as new members simply tap into the successes of other developers.

Also, Cognitio supports collaboration since developers can share knowledge and other developers can contribute to improve solutions or solve blockers via comments and replies.

Cognitio provides live-coding/pair-programming support with an online REPL (only javascript available at the moment). This is backed by a video chat while coding.

How we built it

First, the team had a sync and decided on the stack to go with. Pivotal tracker, a project management tool was used to create stories, and each team member was expected to pick a story based on priority which was decided by the team.

Cognitio was built with the same language (Javascript) for the server and client which made it easy for the team to quickly put it together. In architecture, it is designed to scale therefore, we avoided building a monolithic application. The API's are hosted separately which will make it easy for the team to proceed with mobile or even desktop versions.

The client (frontend) was built with react, and redux is being used to manage application state. React enabled us to build a single page application which increased user experience as the application feels light, fast and very easy to navigate.

For data management, mongoDB was used with mongoose as the ODM. And all these were built on top of Nodejs.

Challenges we ran into

  1. None of the team members had an idea of how to build a web video-chat application. This was researched and we learnt of WebRTC. Currently, we are using SimpleWebRTC which uses free stub servers good for development on a small scale.

  2. The biggest challenge was working on the REPL part of the application. This was challenging because we (at the time of writing) would have to build our own compilers and interpreters for every language we'll need to support. Finally, we got to use a free service ( to do this via it's api.

Accomplishments that we're proud of

Just before submission, we got to demo and pitch Cognitio among the Facebook Developer's Circle members in Lagos, Nigeria where our idea came out tops among the pitches.

Secondly, we've got several requests to join us on the project. And yes, it is an open source project, so contributions are welcome.

What we learned

  1. Cognitio serves to preserve knowledge even beyond the developer community.
  2. Although, we started out to solve a small problem, we've learnt Cognitio has the potential of scaling for enterprise.
  3. Also, the team has learnt a lot about managing expectations as we focused on the theme (increasing developer's productivity, community and craft) and holistic thinking (as the application can scale for enterprise solutions).

What's next for Cognitio

  1. Providing flexibility for an open source Cognitio to support open source and connect more developers from around the world.
  2. Providing an Enterprise solution for organisations in need of managing knowledge to facilitate teams and work.
  3. In need of building content, integrating ways for developers to easily share knowledge, like building plugins for IDE's and code editors.
  4. Leveraging Facebook to share new created blockers for a wider audience.

Built With

Share this project: