Friday 29 September 2017

A case study of PineStem usage

This case study points out the proven process for our project management and business success by using the PineStem.
Once we had the requirements from the customer wherein our project manager had created a project and identified what technologies will be required for them. Each feature was created as a user story under the project, which was then divided into tasks.
It is difficult for a project manager to identify which resources are adept at what technologies. This is where the PineStem‘s intelligence kicks in. Looking at historical data, PineStem calculated the employee efficiency and used this to recommend resources for the tasks that we’d created. This allowed us to identify resources with the required technology/competency. Tasks were also grouped into three sprints, with each sprint duration being two weeks.

At the end of each workday, we would log our work hours, either from the web portal or the PineStem mobile app. PineStem used these to calculate our efficiency and helped the project manager to keep an eye on the budgets.
To see the progress of the tasks in a given sprint, we have the project status reports section. Here, the following graphs were particularly useful –
  • Sprint burndown graph
  • Sprint overshoot graph
  • Task status graph
These graphs gave the project manager an idea of how much work was completed, and how much more time would be needed to meet the sprint deadlines. This allowed the team to gauge whether they needed to put in more hours to meet the sprint deadlines.
After we were done with our tasks, the QA team tested and raised bugs through PineStem’s bug tracking tool. Bugs were raised under the corresponding tasks. It also allowed our project manager to estimate how far a feature was from completion. Understanding what went into fixing a bug was easy since each bug had a comment section and status to track progress.


The client was able to track the progress of the project via the Project status graph and Project load graph. We had 8 weeks to complete the project, we were able to meet that deadline and go live in the 9th week. The team worked hard, but PineStem also played a role in making the project successful.

Conclusion

PineStem has helped us out tremendously by mapping out a viable plan to achieve the goals i.e., a bigger picture. With the aid of sprints, we took action towards the smaller targets inside the project and capitalize on the important tasks which ultimately lead to our desired end-result.

Displaying .rtf files in the browser

Introduction

The main aim of this blog is to show the content of an .rtf file on the browser window. Usually, when trying to open an .rtf file in the browser, it is downloaded instead of being displayed. This is because the browsers cannot reliably display RTF content. In order to overcome this problem, we came up with a solution which involves converting the contents of an .rtf file into HTML and then rendering it on the browser window.
This solution has no bearing on the server side programming language that is used. It is handled completely on the browser side.

Implementation

Assume that the file is hosted on a server which can be then retrieved via an AJAX call.
Step – 1
Upon making an ajax call to the server to retrieve the .rtf file, a blob will be received as shown in the image below –

The in-built JavaScript FileReader object helps in reading the content of a blob. Below is the code snippet explaining how the content of the file is handled.
You can read more about the FileReader object here. It is supported in most major browsers.
The FileReader object lets web applications asynchronously read the contents of the files. It provides various event handlers and methods. One of them is FileReader.onload.
In order to manipulate the content of the RTF file, the external library that we’re going to use requires the content to be an ArrayBuffer. This can be done by calling the FileReader‘s reader.readAsArrayBuffer() method.
So, after manipulating the file content using FileReader, the value that gets returned is as shown below –

Take a look at the code snippet which does the above-explained work.
Step – 2
Upon receiving the ArrayBuffer, a library called RTF.js is used that converts the buffered content into the HTML content that we want.
For proper handling of the content in the .rtf rile, settings can be provided as well. To customize the way images are shown in the rendered HTML file, we can provide these options in callbacks provided by the library.
Picture related settings
For example, using the onPicture property, a border can be added to the images that are present in the .rtf file and display them on the browser window.
Hyperlink related settings
We have the onHyperlink property to add custom styles/events to hyperlinks in the PDF.
Below is the code snippet that takes an ArrayBuffer as input and returns an object comprising of meta data and the actual .rtf content.
Metadata comprises of author name, file name, and description. This can be appended to the <meta></meta> tags of the HTML content.
Likewise, the actual content of the file is obtained by using the render() method of the included library.
Then, the rendered HTML content can be shown on the browser window by appending it to any element.

Voice of the Customer (VOC) – Dynamics 365 CRM

Tags:   Dynamics 365   Dynamics CRM   feedback   survey   VOC   Voice of customer Introduction To Voice of the Customer For any bus...