Most of the websites nowadays use Web Notification API be it Facebook, Twitter, Flowdock, Slack .... you name it. Ever wondered how does that happen? Wanted to implement it but difficulty and fear of learning curve were driving you away? Let me tell you its just a few lines of code even a beginner can understand and start writing. So do not hesitate start implementing it right away with me.

First and foremost we need to check if our browser supports Notification or not. You might be wondering...

Read complete blog post

Hi Everyone,

Writing something after a very long time. I always wonder as to on what topic should I write as I'm amidst the best techies and knowledgeable members in office currently. I feel that technical wise you guys share a very good learning stuff here on Knowbuddy. But when it comes from an HR perspective, there are hardly any technical terms that HR's use.HR is basically connected with understanding human psychology and accordingly helping employees to solve all their queries and...

Read complete blog post

Recently building few microservices and apps in Elixir and deploying it to heroku, we realised that heroku was not very cost effective for us and also we can't get into every nuts and bolt of how heroku manages our app. As a part of learning things related to deploying to our own server and to save some bucks we decided to look for other options and we decided to experiment deploying one of our app to Digital ocean. One thing we were worried about, was whether we can make deployment as easy...

Read complete blog post

In rails one of the way to execute raw query is use of ActiveRecord::Base.connection.execute

We are going to see if we use this option to execute raw query and we are working with pg database then what result it provides and what operations can be performed on that result.

results = ActiveRecord::Base.connection.execute('select * from purposes')

It returns PG::Result object :

#<PG::Result:0x007fd5a09686d8 status=PGRES_TUPLES_OK ntuples=3 nfields=5 cmd_tuples=3>

We can...

Read complete blog post

Imagine this

You are working on a mission critical task, with a delivery date soon approaching. Along with that, the task even asks for a lot of interdepartmental collaboration, bringing the Stakeholders on-board with the developments, and delivering on the challenges that the technology being used has to offer. So you call for an All Party meeting with a set agenda. Everyone shows up and after an hour of electrifying brainstorming, you all together chalk out a plan to tame the beast! -by...

Read complete blog post

Speed

  • Method Missing

Method Missing is one of the concepts of metaprogramming ruby. Although metaprogramming is very powerful it too has some shortcomings especially speed. A normal method is comparatively 1.5x times faster than a missing method. One of our users complained about our calendar page being very slow - on inspecting we found request was taking more than 30 seconds for loading the month view of the calendar and eventually request timed out. The user had lots of activities on that...

Read complete blog post

In this article I am going to show you how to create and customise animated off-canvas side menu in ember with ember-burger-menu.

In your ember application just install ember-burger-menu by

ember install ember-burger-menu

It will also install ember-cli-sass , After installing this package we need to add the following code to get menu template in application.hbs

{{#burger-menu as |burger|}}
 {{#burger.menu itemTagName="li" as |menu|}}
 <button {{action...

Read complete blog post

enter image description here

Team Synergy

Team synergy is a very important factor for a successful project and thus organization. Over the years while I worked on various international projects and worked with different individuals I noticed that if we lack team synergy then many things go for a toss. Sometimes it can impact recent or current releases and sometimes it can have a bigger impact across organization.

There are many team synergy issues which we come across at workplace. However important is to identify those...

Read complete blog post

String encoding is something that we don't really think until we see

 Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT 

Or when users complains about missing special characters like "" (apostrophe copied from Microsoft Word) or when "菜医生" becomes "иЏњеЊ»з”џ".

Before we go into encoding problems, lets understand what encoding is.

A string can be considered as an array of bytes:

irb(main):001:0> "world".bytes
=> [119, 111, 114, 108,...

Read complete blog post

UISlider is a control used to select a single value from a continuous range of values.

Default UISlider view only provides track and thumb with default colour with minimum value to maximum value. You can drag the thumb to start point to end point continuously in the range set.

Default UISlider

enter image description here

If you are using this control in your project, as per the screen design you need to customise the control to make your screen attractive.

Let's Customise the UISlider now

You can customise colour,...

Read complete blog post

To start with, Annotations are an example of declarative programming in action. Rather than write out the procedural code to make something happen everywhere you need it, you write the code once and then declare (through an annotation) where you want that code to be run. You may not have to even write the code: It might be part of the framework the code runs inside of. It's a great way to handle crosscutting concerns (things that are needed in many places in the application but not in every...

Read complete blog post

URL previews are a way of organizing the URLs in the textarea in such a way that the URL is visible in a more organized way to the user instead of a just plain link. The plain URL makes no sense most of the time because of the advent of URL shorteners. With the increasing usage of social media websites and social media share plugins it becomes very difficult to identify spammy and non-spammy posts on the internet and with URL previews we could help such websites differentiate on our apps by...

Read complete blog post

Note: This article requires basic knowledge of elixir. If you are not familiar with I will encourage you to check the link

Ecto is a database abstraction layer for elixir. It provides a domain specific language to interacting with your database. It is also intended for relational database much like Active record. But it share more traits with LINQ in how it generate queries. Ecto in many ways different from ORMs like Active record. Unlike Active record, which uses model as a direct interface...

Read complete blog post

We've couple of Ember apps which communicates to single rails API. We were working on making our API more robust for data related operations so we added couple of checks and validations which led us to a thought that it would be even better if we can add validations on our front-end Ember applications.

But Ember.js framework doesn't provide validations for models. So we investigated further and we found couple of packages that we can use for model level validations. Ember-model-validator is...

Read complete blog post

There are often cross cutting concerns in your app, such as logging, security checkpoints and or maybe business validations.

This is a very simple approach of implementing method interceptors in pure javascript.

The crux: This decorates all the methods for the given object with before and after interceptions.

intercept: function(o) {
 for (let p in o) {
 if (typeof o[p] === 'function') {
 let c = o[p];
 o[p] = function() {
 MIFactory.beforeExecution(o,...

Read complete blog post

CKEditor is a Rich text editor which is used in web applications to write email content, HTML content, templates etc. It provides many features to edit the text like styles, formatting (bold, italic, underline), HTML formatting, alignment options etc. We (QA Team) got a chance to test CKEditor when it was integrated with Realvolve. We created a scenario sheet for each day of testing. We had daily meetings with Dev team to discuss which features from CKEditor are going to deploy for next 1-2...

Read complete blog post

In our project, every time we get a new product from a Donor, we use InventoryNumber table to assign inventory_number to that product. InventoryNumber table has just two columns : (id, code). Code is nothing but the inventory_number that needs to be assigned to the product.

inventory_number needs to be auto-generated for every product and gets added to the InventoryNumber table once the the product is accepted by one of the admin. Also the interesting part is this inventory_number can also be...

Read complete blog post

It's been more than a year when i started learning knockout.js, now I felt it's time to share my experience with you all what i have learnt so far. As this is my first post on Knockout.js, i am going to introduce you to basics of knockout.js.

Knockout is library written in Javascript, which is based on MVVM approach for creating rich and responsive websites

Knockout.js become powerful with some of its highlighting features :

Dependency Tracking :

Knockout automatically identifies the changes...

Read complete blog post

Before start to explain, I Know some of you might have greater experience about this word Proxy. what does this really means?

Let me explain it through simple example, In our school days when class teacher used to take class attendance and if we found some of our friend missing then we still used to hear from back "yes madam" even though the person called is missing in the class. That is nothing but a proxy attendance, It means answering on behalf of someone and you all know if the proxy...

Read complete blog post

CABasicAnimation An object that provides basic, single-keyframe animation capabilities for a layer property.

Using init(keyPath:) method of CABasicAnimation you can animated particular the key path of the property.

Properties of CABasicAnimation

var fromValue: Any?

Defines the value the receiver uses to start interpolation.

var toValue: Any?

Defines the value the receiver uses to end interpolation.

var byValue: Any?

Defines the value the receiver uses to perform...

Read complete blog post