diff --git a/gatsby-config.js b/gatsby-config.js
index b8936b7..6f41318 100644
--- a/gatsby-config.js
+++ b/gatsby-config.js
@@ -87,25 +87,31 @@ module.exports = {
},
},
{
- resolve: `gatsby-source-filesystem`,
+ resolve: `gatsby-source-git`,
options: {
name: `posts`,
- path: `${__dirname}/posts/`,
- },
+ remote: `https://github.com/sachinmjadhav/codebrahma-content.git`,
+ branch: `master`,
+ patterns: `posts/**`
+ }
},
{
- resolve: `gatsby-source-filesystem`,
+ resolve: `gatsby-source-git`,
options: {
name: `solutions`,
- path: `${__dirname}/solutions/`,
- },
+ remote: `https://github.com/sachinmjadhav/codebrahma-content.git`,
+ branch: `master`,
+ patterns: `solutions/**`
+ }
},
{
- resolve: `gatsby-source-filesystem`,
+ resolve: `gatsby-source-git`,
options: {
name: `projects`,
- path: `${__dirname}/projects/`,
- },
+ remote: `https://github.com/sachinmjadhav/codebrahma-content.git`,
+ branch: `master`,
+ patterns: `projects/**`
+ }
},
{
resolve: 'gatsby-plugin-crisp-chat',
diff --git a/package-lock.json b/package-lock.json
index 00b3246..3fd0f3b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10758,6 +10758,19 @@
}
}
},
+ "gatsby-source-git": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gatsby-source-git/-/gatsby-source-git-1.0.1.tgz",
+ "integrity": "sha512-1nopUF/9nXu+0f7hwqQrpnwyDRi/EP/pah5L/aar4MhG6u1MxF23EFz8TPNgkm/EaC348Rte9ZEixChBwEYXYA==",
+ "requires": {
+ "fast-glob": "^2.2.3",
+ "fs-extra": "^5.0.0",
+ "gatsby-source-filesystem": "^2.0.4",
+ "git-url-parse": "^11.1.1",
+ "rimraf": "^2.6.2",
+ "simple-git": "^1.105.0"
+ }
+ },
"gatsby-telemetry": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.1.4.tgz",
@@ -11286,6 +11299,14 @@
"parse-url": "^5.0.0"
}
},
+ "git-url-parse": {
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.1.2.tgz",
+ "integrity": "sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ==",
+ "requires": {
+ "git-up": "^4.0.0"
+ }
+ },
"github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
@@ -18403,6 +18424,14 @@
"simple-concat": "^1.0.0"
}
},
+ "simple-git": {
+ "version": "1.124.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.124.0.tgz",
+ "integrity": "sha512-ks9mBoO4ODQy/xGLC8Cc+YDvj/hho/IKgPhi6h5LI/sA+YUdHc3v0DEoHzM29VmulubpGCxMJUSFmyXNsjNMEA==",
+ "requires": {
+ "debug": "^4.0.1"
+ }
+ },
"simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
diff --git a/package.json b/package.json
index 0042ba9..24b3ef4 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
"gatsby-remark-images": "^3.0.16",
"gatsby-remark-prismjs": "^3.2.11",
"gatsby-source-filesystem": "^2.0.39",
+ "gatsby-source-git": "^1.0.1",
"gatsby-theme-ui": "^0.1.5",
"gatsby-transformer-remark": "^2.4.0",
"gatsby-transformer-sharp": "^2.1.21",
diff --git a/posts/4-steps-building-cloud-ready-application-architecture/2019-04-05-4-Steps-to-Building-a-Cloud-Ready-Application-Architecture.md b/posts/4-steps-building-cloud-ready-application-architecture/2019-04-05-4-Steps-to-Building-a-Cloud-Ready-Application-Architecture.md
deleted file mode 100644
index 1405658..0000000
--- a/posts/4-steps-building-cloud-ready-application-architecture/2019-04-05-4-Steps-to-Building-a-Cloud-Ready-Application-Architecture.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-templateKey: "blog-post"
-title: "4 Steps to Building a Cloud-Ready Application Architecture"
-date: 2019-04-05
-featuredpost: false
-description: >-
- Most experts agree that by the year 2020, nearly 83 percent of enterprise workloads will be based in the cloud. In just the past few years, the number of businesses using cloud-based tools has exploded. If your company is in
-author: Anand Narayan
-link: /4-steps-building-cloud-ready-application-architecture
-category:
-- Tutorial
----
-
-Most experts agree that by the year 2020, nearly [83 percent of enterprise workloads](https://www.forbes.com/sites/louiscolumbus/2018/01/07/83-of-enterprise-workloads-will-be-in-the-cloud-by-2020/#3dd5a6e26261) will be based in the cloud. In just the past few years, the number of businesses using cloud-based tools has exploded.
-
-If your company is in the business of developing applications for mass consumption, finding a way to make these programs more functional and reliable is a must. Many of the most popular apps on the market have found a way to seamlessly integrate cloud technology into their interface.
-
-Are you looking for a way to build cloud-ready application architecture? If so, consider the following tips for success.
-
-
-
-## 1. Work On Making Security Systemic
-One of the biggest mistakes app developers make is treating security as an afterthought. Failing to take the security of your app seriously will result in a number of problems in the future.
-
-When attempting to build a success cloud-ready architecture for your app, be sure to make the security within the program as systemic as possible. The only way to do this is by building security tools to go in the actual architecture instead of using third-party programs.
-
-When attempting to come up with the right security architecture for your app, be sure to consider the industry it will be operating in. For instance, an app for a healthcare company will need to be HIPAA compliant. Neglecting to consider this important factor will lead to fines and a number of other mishaps along the way.
-
-## 2. Your App Needs to be a Collection of Services
-When developing cloud-based apps, you need to think about making it a collection of services. By doing this, you can make your app more useful for the client.
-
-Most developers with limited experience in the cloud fail to realize how complex it can be to build these types of programs. Ideally, you want to use loosely coupled applications to avoid issues with user interface and data restrictions.
-
-By providing clients with a treasure-trove of tools in a particular [cloud-based app](https://www.atlantic.net/cloud-hosting/benefits-cloud-based-applications/), you can keep them coming back for more. As you build more cloud-based programs, you will start to find a groove. This groove will allow you to build and launch new applications in a timely manner.
-
-## 3. Avoid Chatty Application Components
-One of the main reasons why business owners and consumers love cloud-based apps is due to how fast and efficient they are. If you want to ensure your new app is fast, you need to be careful when adding chatty application components.
-
-These types of components will require constant communication with other parts of the app. While this may sound like a good thing, it can actually slow down your app significantly. The slower your cloud-based app runs, the higher the risk of users uninstalling it will be.
-
-The best way to catch these performance issues is by adequately monitoring your app’s infrastructure. The tools provided by companies like [AppOptics](https://www.appoptics.com/infrastructure-monitoring) will keep you informed about how well your program is performing.
-
-
-
-## 4. Create App Architecture That is Easy to Scale
-The main goal you should have as an app developer is providing consumers with a product they will love. If your app starts to gain popularity, it will usually get put through the paces. Instead of dealing with outages or crashes, you need to create architecture that is easy to scale.
-
-By keeping an eye on future growth during the development process, you can keep your program running like a well-oiled machine.
-
-Take Your Time When Developing New Apps
-Rushing through the app development process is a recipe for disaster. Taking your time and testing the app at each stage of development can help you find and fix problems with ease.
diff --git a/posts/4-steps-building-cloud-ready-application-architecture/images/cloud-ready-image1.jpg b/posts/4-steps-building-cloud-ready-application-architecture/images/cloud-ready-image1.jpg
deleted file mode 100644
index 5a8d011..0000000
Binary files a/posts/4-steps-building-cloud-ready-application-architecture/images/cloud-ready-image1.jpg and /dev/null differ
diff --git a/posts/4-steps-building-cloud-ready-application-architecture/images/cloud-ready-image2.jpg b/posts/4-steps-building-cloud-ready-application-architecture/images/cloud-ready-image2.jpg
deleted file mode 100644
index bdded3d..0000000
Binary files a/posts/4-steps-building-cloud-ready-application-architecture/images/cloud-ready-image2.jpg and /dev/null differ
diff --git a/posts/4-ux-tips-help-design-first-mobile-app/2017-02-26-4UX-Tips-To-Help-You-Design-Your-First-Mobile-App.md b/posts/4-ux-tips-help-design-first-mobile-app/2017-02-26-4UX-Tips-To-Help-You-Design-Your-First-Mobile-App.md
deleted file mode 100644
index 43795f0..0000000
--- a/posts/4-ux-tips-help-design-first-mobile-app/2017-02-26-4UX-Tips-To-Help-You-Design-Your-First-Mobile-App.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-templateKey: 'blog-post'
-title: '4 UX Tips To Help You Design Your First Mobile App'
-date: 2017-02-26
-featuredpost: false
-category:
-- General
-description: >-
- As of June 2016, there were over 2.2 million apps on the Google Play store. Another study published by Google, states that only a fourth of the apps installed on a smartphone are used on a daily basis. Overcoming such
-author: Anand Narayan
-link: /4-ux-tips-help-design-first-mobile-app
-tags:
-- mobile app
-- product development
-- UX design
----
-As of June 2016, there were over 2.2 million apps on the Google Play store. Another study published by Google, states that only a fourth of the apps installed on a smartphone are used on a daily basis. Overcoming such staggering numbers and letting your app shine through will require a good user experience and friendly interface design. Recent advancements in mobile technology and the fierce app competition have taken mobile design to exceptionally high standards. Users have come to expect nothing less either. The ‘MVP does not need to be well designed’ ideology only works when your idea is exceptionally unique and solves the problem 10x better than the current solution.
-
-Below I share 4 pointers that’ll help you come up with decent UX design for your first mobile app:
-
-## 1. Start From The Basics
-Designing for a mobile is inherently very different from designing for the laptops and bigger screens. Hence putting together an application by reducing the design and content of your website is not a great idea.
-
-You should ideally start thinking of the mobile app’s UX from the absolute basic. How would you, if you were a user, want the experience to happen. What would be the first screen that you would want to see. Is login an absolute necessity for the user to progress?
-
-A bottom up thinking will give you some clarity on how the user should ideally flow and this will give you a good starting point while designing the user experience for your mobile app.
-
-## 2. KPI Based User Design
-Mobile applications will be a natural extension to your business, and based on your business objectives, your app should be single mindedly focussed on achieving the business goal. If you are a hotel booking company, the only task your app should focus on is getting a user to book a hotel successfully.
-
-If you’re a content based company, your KPIs would include the time spent by users on your mobile application. So your app needs to do two things really well – 1. Allow your users to read without any noise 2. Seamlessly lead the user to similar articles that he/she may find useful.
-
-A good exercise to ensure your first app has a good user experience, is to define the KPIs (key performance indicators) even before you start the design process. Stick to designing features/flows/process that’ll help with meeting the KPIs.
-
-## 3. Comply with the Platform Standards
-Smartphone manufacturers have invested considerable amount of money and time educating users on how the devices work. Certain gestures, swipes and taps are so ingrained in the user’s psyche that designing something new might just confuse them. The gestures are also designed with very specific reasons in mind. For example, the long press in Android is usually implemented to prevent accidental taps. It is also usually implemented for actions that are not required very often.
-
-The best way to ensure familiarity with your app is to stick to the underlying principles of the platform you’re designing the app for. Interface design, colors and images can be changed to fit your brand.
-
-A drastic shift from the platform convention might do your app more harm than good.
-
-## 4. Keep it Insanely Simple
-Mobile screens are small. You only have so much real estate to work with. If you try to stuff in features, design elements or heavy amounts of text, you might end up overwhelming the user. Keeping the feature set to a bare essential should be a priority. Using white spaces, clean design principles and well designed icons in place of text can go a long way in making it easier for your user to navigate your app.
-
-Designing for a simple user experience will also make the app faster (unless you’ve used the wrong tech stack – in which case, we’re there to help). Certain apps come with a quick walk through to help people understand the basics, but if you see the need to put in a proper user guide, a FAQ of sorts, then it’s probably time to hit the drawing board again.
-
-We hope these pointers help you kickstart your user experience design for your first mobile app, and in the right direction. Keeping a focus on user experience right from the beginning will save you a lot of frustration going forward. It can also be the difference between success and failure!
-
-Good luck!
-
-[Oh, and if you’re looking to hire top front end developers for your project, do check us out!](/front-end-development-company)
diff --git a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/2016-07-12-5Areas-Where-Tooling-Makes-Nodejs-Developers-More-Productive.md b/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/2016-07-12-5Areas-Where-Tooling-Makes-Nodejs-Developers-More-Productive.md
deleted file mode 100644
index 26a39a7..0000000
--- a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/2016-07-12-5Areas-Where-Tooling-Makes-Nodejs-Developers-More-Productive.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-templateKey: 'blog-post'
-title: '5 Areas Where Tooling Makes Node.js Developers More Productive'
-date: 2016-07-13
-featuredpost: false
-description: >-
- Codebrahma Node.js Developers covering five areas of tooling that help Node.js developers:/ IDEs, build tools, transpilation, REST API frameworks.
-keywords:
-- Node.JS Developers
-- Node.JS Development Company
-- Hire Node.JS Developers
-- Hire Node.JS Programmers
-- nodejs programmers
-author: Aravindan
-link: /5-areas-where-tooling-makes-node-js-developers-more-productive
-category:
-- Research and Articles
-tags:
-- node.js
-- Node.js Development
-- node.js frameworks
----
-
-
-A host of tools are available to help programmers in their journey of node.js programming. Irrespective of whether you are an expert programmer or a newcomer, these tools will help you create robust, scalable, re-usable code that leads to great applications. Today let us look at some of the areas in which these tools can help you optimize your code.
-
-## IDE
-
-Integrated Development Environment is the birth place of great code. A great IDE should act as a one stop shop for all the programmer's needs to produce optimized code. The IDE should also be simple and easy to navigate so that it does not distract the programmer's attention from the code.
-
-There are a number of IDEs that are doing a great job in providing the right environment to build great applications. One of the most powerful IDEs that is available today is the [Webstorm](https://www.jetbrains.com/webstorm/). It supports most modern frameworks, build tools and a load of plugins to make coding a lot more enjoyable. It is one of those rare products that does not allow you to leave its windows for any reason except to take a look at your browser.
-
-## Build Tools
-
-Getting your project ready for release is another task that requires the help of tools. The node.js eco-system provides a good number of tools for this task. Some of the most famous tools for this purpose are Gulp, Grunt, Brunch, or WebPack.
-
-[Grunt](http://gruntjs.com/)
-
-Grunt is a task runner that allows you to specify the task to be completed, run it once and then it will take care of the job for you. It is basically a powerhouse that allows you to perform a range of functionalities with minimal code. The grunt js manages to achieve this through the host of plugins.
-
-
-
-[Gulp](http://gulpjs.com/)
-
-Gulp is an easy-to-use streaming build system that is very flexible. Though fundamentally both gulp and grunt perform the task of satisfying programmer needs, the difference lies in the fact that Gulp focuses on writing code while grunt is more focused on writing configuration.
-
-
-
-## Transpilation
-
-It is the process of converting source code from one language to another language or another form of the same language. If you have worked with any superset of the javascript or the other languages such as CoffeeScript, ECMAScript 6, JSX etc. you would have faced the need for transpiler. The transpiler basically converts the source code into code that can run smoothly in the latest Node.js environment and in the modern browsers.
-
-Node.js does not run code of languages such as CoffeeScript directly out of the box. Though there are many transpilers available in the market today, the most powerful tool among them is [BABEL](https://babeljs.io/). It has support for all the latest versions of javascript that you can utilize right now without waiting for browser support.
-
-## Rest API Frameworks and Services
-
-The use of frameworks makes the programming a pleasurable process. Though a lot of frameworks are available today, some of the most famous frameworks are time-tested to ensure the best programming experience. The [best frameworks for node.js developers](/9-best-node-js-frameworks-developers) gives you an idea of all the great frameworks that works wonders for developers across the globe. Let us take a look at some of them
-
-[Express.js](http://expressjs.com/)
-
-Express.js was built by TJ Holowaychuk, one of the members of core Node project team. A large community backs this framework, therefore it has the advantage of continuous updates and reforms of all the core features. This is a minimalist framework that is used to build a number of mobile applications and APIs.
-
-
-
-[hapi.js](http://hapijs.com/)
-
-Hapi is a powerful and robust framework that is used for developing APIs. The well-developed plugin system and various key features such as input validation, configuration-based functionality, implement caching, error handling, logging makes the Hapi one of the most preferred frameworks.
-
-[Sails.js](http://sailsjs.org/)
-
-This is yet another MVC framework that has become very popular with Node.js developers. The framework has gained traction through the development of chat applications, dashboards and multi player games. It is most famous for building data-driven APIs. It uses waterline for object related mapping and db solutions. This framework uses Express.js for handling HTTP requests and is built upon Node.js. Its compatibility with Grunt modules, including LESS, SASS, Stylus, CoffeeScript, Jade, Dust makes Sails.js an ideal candidate for browser based applications.
-
-## Test Frameworks and Tools
-
-Testing is an integral part of software development life cycle that is essential to ensure the quality of developed product. Code developed on Node.js which is powered by a language such as Javascript has an additional need for thorough automation testing. The most commonly used tools for this purpose are Mocha and Chai. Mocha is a javascript testing framework and chai is a BDD/TDD assertion library. This duo comes into play in the backend testing and has the capacity to perform all types of testing such as unit, integration, functional and smoke.
-
-
-
-The frontend testing is generally taken care by karma.js and jasmine. Karma is a JavaScript command line tool that can be used to spawn a web server which loads your application's source code and executes your tests. Jasmine is an open source testing framework for JavaScript. It aims to run on any JavaScript-enabled platform, to not intrude on the application nor the IDE, and to have easy-to-read syntax.
-
-
-
-_Conclusion_:
-
-These are 5 areas where tooling will really help you a great deal in creating great code.
-
-If you are already using these tools or if you are going to try them now, Share your thoughts in the comments and we will discuss.
\ No newline at end of file
diff --git a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/chai.png b/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/chai.png
deleted file mode 100644
index 70dd5e8..0000000
Binary files a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/chai.png and /dev/null differ
diff --git a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/express-js.png b/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/express-js.png
deleted file mode 100644
index e7ec6ea..0000000
Binary files a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/express-js.png and /dev/null differ
diff --git a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/grunt.png b/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/grunt.png
deleted file mode 100644
index dcfad6c..0000000
Binary files a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/grunt.png and /dev/null differ
diff --git a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/gulp.png b/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/gulp.png
deleted file mode 100644
index ae9dfe1..0000000
Binary files a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/gulp.png and /dev/null differ
diff --git a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/karma.png b/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/karma.png
deleted file mode 100644
index 3fd34eb..0000000
Binary files a/posts/5-areas-where-tooling-makes-node-js-developers-more-productive/images/karma.png and /dev/null differ
diff --git a/posts/5-awesome-tools-keep-rails-code-clean-organized/5-awesome-tools-keep-rails-code-clean-organized.md b/posts/5-awesome-tools-keep-rails-code-clean-organized/5-awesome-tools-keep-rails-code-clean-organized.md
deleted file mode 100644
index 1958c26..0000000
--- a/posts/5-awesome-tools-keep-rails-code-clean-organized/5-awesome-tools-keep-rails-code-clean-organized.md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-templateKey: 'blog-post'
-title: '5 Awesome Tools to Keep Your Rails Code Clean & Organized'
-date: 2016-04-29
-featuredpost: false
-description: >-
- The ruby on rails experts at codebrahma have come up with this list of awesome tools that would help you keep your code clean.
-keywords:
-- Ruby on Rails Development
-- ruby on rails companies
-- ruby on rails developers
-- hire ruby on rails developers
-author: ARAVINDAN
-link: /5-awesome-tools-keep-rails-code-clean-organized
-category:
-- Research and Articles
-tags:
-- Ruby on rails development
-- ruby on rails
----
-
-One of the main challenges in developing your own rails application is to keep your rails code clean. The rails experts at codebrahma have come up with this list of awesome tools that would help you keep your code clean and optimized for best results.
-
-Ruby is an open-source, dynamic, object oriented programming language that is used extensively in the world of web-development. It was developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan. Ruby is one of the most popular programming languages in the world. One of the main reasons for the popularity of ruby is the web application framework written in ruby called Ruby on rails.
-
-Ruby on Rails or simply Rails is a MVC framework that is used for creating web applications. It was developed by David Heinemeier Hansson from his work on the project management tool called Basecamp. Developing a web application on Ruby on Rails is five to ten times faster than developing the same on any java frameworks.
-
-## **The Thumb Rule**
-
-### "Pure code is the code without side effects"
-
-The fundamental difference between a professional programmer and an amateur coder lies in the quality of the code that they produce. The amateur may be able to produce code that does the job but there are certain aspects of the work of a professional that makes it stand out. The important qualities of a professional's work lies in the 3 R's
-
-* Re-usability
-* Readability
-* Robust
-
-Developing code that posses these qualities requires one simple rule: The code should be clean and organized.
-
-## **Simple does not mean easy**
-
-Though the path to creating professional code seems crystal clear and simple, executing the task may not be as easy as it sounds. As the size of the applications grows the task of keeping the code clean becomes tedious. Hours of fruitful labour that can be used in other useful pursuits should be used in order to make the written code organized. This limitation can be overcome with the use of some tools. These tools help in developing code that is optimized, understandable and re-usable
-
-We at codebrahma recommend the use of these 5 amazing tools to keep your code absolutely clean and organized
-
-### **Dead Weight**
-
-Web content by nature is highly dynamic. The content and the design have to be changed from time to time inorder to keep netizens interested and to keep attrition rates down. But a major challenge in creating such an evolving content is the accumulation of unused CSS style sheets over time. Simple as it may seem, eliminating all unused css selectors manually is a daunting task. Dead weight is here to make the job easy for us. Dead weight is a ruby gem that is exclusively designed for the purpose of weeding out unused css selectors.
-
-This gem helps the developer determine which CSS selectors are seldom used and can be safely removed. All you have to do is provide the set of style sheets and HTML pages to the gem and it will point out which are the css selectors that can be safely deleted. This gem cannot be implemented out of the box in rails as most of the web pages are dynamic in nature. In case you have opted to use pre-compilers such as Sass or Less then compiling all the style sheets and providing them as simple CSS files to the dead weight task is a recommended method to perform this operation.
-
-### **Ruby Critic**
-
-One of the newbies in the list of ruby tools, this gem is a combination of statistical analysis gems Reek,Flay and Flog where reek is used to determining smelly code, Flay is used for detecting duplicate code and Flog is used for ABC metrics. It eases the process of viewing your smelly code and refactoring them by creating a nice HTML file. This format of output makes it very user-friendly.
-
-### **Bullet**
-
-Another hurdle in the path to creating your amazing rails application is the N+1 query. Let us consider a case where we have a set of student roll numbers and corresponding marks as well in our application. When we reiterate over the marks then we will be running two queries
-
-* One query to find the roll numbers
-* And for each query we will have one query to find the corresponding marks
-
-Thus if we run 1000 iterations then we will be running 1000+1 queries.This problem can be overcome with the use of include option that allows us to retrieve both roll numbers and the corresponding marks in a single query. The Bullet gem facilitates the solving of the N+1 problem by promptly throwing error messages whenever the code optimization is required. The gem also works out of the box and plays a huge role in creating optimized code
-
-### **Brakeman**
-
-In today's world cyber crime is a real threat. Creating secure code that does not have any malicious elements in it is an absolute necessity. The Brakeman is a gem that facilitates the process of making our code secure. It scans the entire application and provides a list of all the vulnerabilities in a neat format.The security warnings are classified according to their severity as high medium and low.This allows the easy navigation and understanding of the issues. The list of various security threats can be found in the [brakeman warning list][1]
-
-"Vigilance is the price for security"
-
-Just as all security applications one important disadvantage of Brakeman is that,if there are no warnings from brakeman for your application it does not mean that your application is absolutely vulnerability free.
-
-![Brakeman screenshot][2]
-
-![BRAKEMAN GEM][3]
-
-![BRAKEMAN SCREENSHOT 3][4]
-
-### **rails_best_practices**
-
-The rails best practices is the rails code quality analyzer gem. It is used to sniff out code smells that are specific to rails. It offers a lot of suggestions to improve the quality of the code that you create such as use scope access, restrict auto-generated routes, add database indexes, etc. Unfortunately there might be a number of suggestions which might turn out to be false positives but nevertheless it is a great way to keep your code clean and tidy
-
- ![RAILS BEST PRACTICE GEM][5]
-
-![RAILS BEST PRACTICE GEM][6]
-
-## **Conclusion**
-
-Creating optimized code for large rails applications can be a big challenge even for very experienced programmers. There are many gems present in Rails that can facilitate the process of clean code creation. We at codebrahma recommend these five gems to make great rails code. If you have any suggestions or if there are any gems that you feel should get on to this list go ahead and add it to the comments section.
-
-[1]: http://brakemanscanner.org/docs/warning_types/
-[2]: ./images/BRAKEMAN-SCREENSHOT-1.png
-[3]: ./images/BRAKEMAN-SCREENSHOT-2.png
-[4]: ./images/BRAKEMAN-SCREENSHOT-3-1024x373.png
-[5]: ./images/RAILS-BP_1.png
-[6]: ./images/RAILS-BP_2.png
\ No newline at end of file
diff --git a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-1.png b/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-1.png
deleted file mode 100644
index e3f2d31..0000000
Binary files a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-1.png and /dev/null differ
diff --git a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-2.png b/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-2.png
deleted file mode 100644
index 8706fcd..0000000
Binary files a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-2.png and /dev/null differ
diff --git a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-3-1024x373.png b/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-3-1024x373.png
deleted file mode 100644
index 406b325..0000000
Binary files a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/BRAKEMAN-SCREENSHOT-3-1024x373.png and /dev/null differ
diff --git a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/RAILS-BP_1.png b/posts/5-awesome-tools-keep-rails-code-clean-organized/images/RAILS-BP_1.png
deleted file mode 100644
index f5a18a8..0000000
Binary files a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/RAILS-BP_1.png and /dev/null differ
diff --git a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/RAILS-BP_2.png b/posts/5-awesome-tools-keep-rails-code-clean-organized/images/RAILS-BP_2.png
deleted file mode 100644
index c217b19..0000000
Binary files a/posts/5-awesome-tools-keep-rails-code-clean-organized/images/RAILS-BP_2.png and /dev/null differ
diff --git a/posts/5-must-use-meteor-packages-for-meteor-developers/5-must-use-meteor-packages-for-meteor-developers.md b/posts/5-must-use-meteor-packages-for-meteor-developers/5-must-use-meteor-packages-for-meteor-developers.md
deleted file mode 100644
index 870362b..0000000
--- a/posts/5-must-use-meteor-packages-for-meteor-developers/5-must-use-meteor-packages-for-meteor-developers.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-templateKey: 'blog-post'
-title: '5 MUST USE METEOR PACKAGES'
-date: 2016-02-08
-featuredpost: false
-description: >-
- List of top Packages every meteor developers should know. Hire Meteor Developers who have built 10+ production level applications.
-keywords:
-- Meteor development company
-- Hire meter developers
-- Meteor developers
-author: Raviraj Hegde
-link: /5-must-use-meteor-packages-for-meteor-developers
-category:
-- Research and Articles
-tags:
-- Meteor Development
----
-
-Meteor, also known as MeteorJS, is a JavaScript application framework purpose designed to develop platform agnostic web applications. Meteor is written using Node.js and is completely open source. Native web applications are slowly gaining ground; we no longer need to load entire pages when clicking a menu or changing some settings on a page inside a browser. Here in this article, we are trying to list down the packages that every meteor developer should know.
-
-Meteor has spiked in popularity as more and more developers are going back to the mobile web. As an application framework, Meteor is designed to simplify development of applications. To ease such development, it allows the creation and use of packages: readymade blocks of code that can be imported into your pre-existing code in a modular fashion to add new features. Here, we discuss some of the most useful and popular packages for Meteor.
-
-1. **SIMPLESCHEMA**
-
-This is a simple and reactive package that is used for validating schema when building web applications in Meteor. Other packages like _Collection2_ and _AutoForm_ include _SimpleSchema_ to offer a more comprehensive code base and functionality but if you want granular control over your data, this allows data manipulation at the most basic level.
-
-2. **AUTOFORM**
-
-This Meteor package comprises UI and other data input components. This allows you to easily create forms to accept user data as input for appropriate processing. _AutoForm_ also enables automatic reactive validation and can perform automatic insert and update events for the same. _AutoForm_ requires the _SimpleSchema_ package to run; if _Collection2_ is already installed, it can also run in cooperation with that.
-
-3. **PROMISE**
-
-The okgrow:promise is an API that adds a host of useful functionality to the core Meteor framework. It does so mainly by adding features related to returning Promise properties to various existing functions, thereby expanding their usefulness. _Meteor.promise_, _Meteor.wrapPromise_, _Meteor.wrapAsync_, _HTTP.getPromise_, and ReactivePromise are the additional functionality enabled by this package. This also improves existing _Meteor.subscribe_ with a new property `_readyPromise_` in returned object which resolves when the subscription is ready.
-
-4. **COLLECTION HOOKS**
-
-This add-on package extends the use and functionality of the _Mongo.Collection_ by adding before/ after hooks for insert, update, remove, find and findOne. These hooks are platform agnostic and work across clients, servers or a mix. Functionality is maintained even when the client initiates a collection method and it is the server that runs the hook, keeping in accordance to the collection validators (allow/deny). It is a very small but efficient utility that excels at a single job; in this case, it is exposing hooks after the specified objects. This can, in turn, be utilised for denormalization of data, implementing chain deletion procedures, sanitising and securing user input risks, etc.
-
-5. **COLLECTION-HELPERS **
-
-This package automatically arranges for transformations on pre-existing collections by using the transform option in the _Mongo.Collection_ in Meteor. This allows for the creation of simple models with interfaces similar to those of template helpers with extreme ease and convenience by generating user defined "_helpers_" that ease such transformations.
-
-There are a large number of Meteor packages out there for adding a variety of functionality to your application. Admittedly, there can be no "must use" packages since the choice of packages is mostly determined by the functionality you desire.
-
-However, from a general and overall perspective, the highlighted packages are the ones that are can be used in a wide variety of scenarios and provide functionality for a great number of applications and not only niche ones.
-
-
\ No newline at end of file
diff --git a/posts/5-reasons-to-choose-angularjs-over-jquery/5-reasons-to-choose-angularjs-over-jquery.md b/posts/5-reasons-to-choose-angularjs-over-jquery/5-reasons-to-choose-angularjs-over-jquery.md
deleted file mode 100644
index 836e78f..0000000
--- a/posts/5-reasons-to-choose-angularjs-over-jquery/5-reasons-to-choose-angularjs-over-jquery.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-templateKey: 'blog-post'
-title: '5 Reasons to Choose AngularJS over jQuery'
-date: 2016-01-13
-featuredpost: false
-description: >-
- AngularJS is a very powerful JavaScript framework, here are 5 reasons to choose AngualrJS over jQuery. Hire Best AngularJS Development Company
-keywords:
-- AngularJS development company
-- angularjs vs jquery
-- angularJS over jquery
-- choosing angularjs
-- why choose AngularJS
-author: Raviraj Hegde
-link: /5-reasons-to-choose-angularjs-over-jquery
-category:
-- Research and Articles
-tags:
-- AngularJS Development
-- web application development
----
-
-AngularJS is a very powerful JavaScript framework designed and maintained by Google. It is used primarily to develop and run web applications on the client machine. AngularJS is built specifically to overcome the various limitations of existing technologies like HTML, CSS and JavaScript in one seamlessly integrated package. jQuery, on the other hand, is a JavaScript library comprising a modular set of platform agnostic methods for handling various requirements of the dynamic web, such as running calls on AJAX, traversing and selecting DOM elements, parsing animations and transition effects, manipulating page elements etc. It standardize the task of front-end development and user interaction elements.
-
-![Angular_Tutoria][1]
-
-AngularJS and jQuery can often be used for the same ends, but which implementation is the best? Here are 5 reasons why AngularJS is the better choice.
-
-1. **A Complete & Comprehensive Solution**
-
-AngularJS is a single integrated solution for front-end development. It is all-inclusive in its approach and does not require any external plugins or frameworks to build web applications with. In addition to this, AngularJS features many useful methods and actions that are fast becoming industry standards, partly due to their simplicity and partly due to Google putting their weight behind this product. Some noticeable features offered by AngularJS are REST actions, ability to use MVVM (Model View View-Model) patterns, Data Binding, Dependency Injection, in built templating using HTML and built-in unit testing APIs.
-
-> [Hire the best AngularJS developers for your project][2]
-
-2. **Rapid Development Pace**
-
-AngularJS was designed to overcome the limitations posed by HTML in developing dynamic web applications. As such, it is extremely easy to build AngularJS web applications. In addition to this, AngularJS is free to use and comes replete with complete API documentation, examples and tutorials to guide you during every stage of the front end development process.
-
-3. **Easily Integrated into Existing Code**
-
-AngularJS is designed to be used in developing web applications. As such, it integrates efficiently with existing code and processes and can easily communicate between cross platform methods and applications. AngularJS can function with jQuery if the latter is already present during the bootstrapping process. If not, AngularJS contains its own approximation of the jQuery library called jQLite. Further development or modification to the existing code base is kept to a minimum when using AngularJS.
-
-4. **All of the benefits with none of the drawbacks**
-
-jQuery is established technology while AngularJS is relatively new. However, AngularJS can do everything that the former can, it is not substantially larger in size or memory requirements and it is far easy to run unit and end-to-end testing on AngularJS web apps. AngularJS applications scale very efficiently and offer no substantial drawbacks over jQuery.
-
-5. **Unit Testing Ready**
-
-The entire Angular is connected together by Dependency Injection (DI). DI is used to deal with your controllers and extensions. Since every one of your controllers rely on upon DI to pass it data, Angular's unit tests can usurp DI to perform unit testing by inserting mock information into your controller and measuring the output and behavior. Truth be told, Angular already has a fake HTTP supplier to infuse fake server reactions into controllers.
-
-This beats the more conventional method of testing web applications by creating individual test pages that conjure one part and after that invoke one component and then interacting with it to see if it works.
-
-So there you have it; five reasons why AngularJS trounces jQuery in front end development and writing client side applications. Although there are a lot more functions that AngularJS handles better, these alone should be enough to convince you to make the switch to the newer, more agile platform.
-
-[1]: ./images/Angular_Tutoria.png
-[2]: /hire-angularjs-development-company/
diff --git a/posts/5-reasons-to-choose-angularjs-over-jquery/images/Angular_Tutoria.png b/posts/5-reasons-to-choose-angularjs-over-jquery/images/Angular_Tutoria.png
deleted file mode 100644
index 8cc52f2..0000000
Binary files a/posts/5-reasons-to-choose-angularjs-over-jquery/images/Angular_Tutoria.png and /dev/null differ
diff --git a/posts/6-reasons-to-choose-meteor/6-reasons-to-choose-meteor.md b/posts/6-reasons-to-choose-meteor/6-reasons-to-choose-meteor.md
deleted file mode 100644
index 1b3de00..0000000
--- a/posts/6-reasons-to-choose-meteor/6-reasons-to-choose-meteor.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-templateKey: 'blog-post'
-title: '6 Reasons to Choose Meteor'
-date: 2015-12-28
-featuredpost: false
-description: >-
- Here are the reasons to choose Meteor Framework. Mеtеоr іѕ a rоbuѕt аnd full-ѕtасk JаvаSсrірt platform fоr dеvеlоріng rеаl-tіmе web and mоbіlе аррlісаtіоnѕ.
-keywords:
-- why choose Meteor
-- Reasons to choose Meteor
-- Features of Meteor
-- Meteor Development
-author: Raviraj Hegde
-link: /6-reasons-to-choose-meteor
-category:
-- Research and Articles
-tags:
-- Meteor Development
-- Node.js Development
----
-
-As a popular client-side scripting language, JаvаSсrірt іѕ currently being uѕеd bу almost аll wеbѕіtеѕ. At the ѕаmе tіmе, іt is аlѕо being used bу dеvеlореrѕ, along with HTML5 and CSS3, fоr development оf cross-platform mоbіlе аррѕ. However, Meteor іѕ considered tо stand out.
-
-Meteor's open source framework еnаblеѕ рrоgrаmmеrѕ to сrеаtе web аррlісаtіоnѕ and mоbіlе аррѕ using JavaScript. The unified Isobuild ѕуѕtеm рrоvіdеd bу Meteor makes іt еаѕіеr to write the соdе оnсе, and run іt оn both wеb browsers and mоbіlе dеvісеѕ. The cloud platform provided by Meteor саn еаѕіlу be uѕеd to deploy, mоnіtоr and ѕсаlе the Connected Client аррlісаtіоnѕ.
-
-### Why choose Mеtеоr?
-
-Presently, Mеtеоr іѕ a rоbuѕt and full-ѕtасk JаvаSсrірt platform fоr developing rеаl-tіmе web and mоbіlе аррlісаtіоnѕ. It is built оn tор оf Nоdе.jѕ. Some other JavaScript frameworks аrе аlѕо quite powerful but they аrе nоt better than Mеtеоr and we will outline five rеаѕоnѕ why уоu should choose Mеtеоr.
-
-**Full-Stack Sоlutіоn**
-
-Mеtеоr оffеrѕ a full-ѕtасk solution fоr developing and dерlоуіng wеb аррlісаtіоnѕ. Mеtеоr comes bundled wіth ѕеvеrаl built-іn features, ѕuсh as rеасtіvе tеmрlаtеѕ, automatic CSS and JS mіnіfісаtіоn on the production ѕеrvеr and hоt соdе rеlоаd. Itѕ cloud platform, Gаlаxу, іѕ ԛuіtе powerful fоr deploying, scaling аnd monitoring client аррlісаtіоnѕ. It аlѕо offers useful client-side technologies, including templates, hеlреrѕ and events.
-
-
-![meteor_framework \(1\)][1]
-
-
-**Development Ecosystem**
-
-Meteor is mоrе than a JаvаSсrірt development framework. It іѕ an ореn-ѕоurсе Iѕоmоrрhіс Dеvеlорmеnt Eсоѕуѕtеm (IDevE). Mеtеоr аllоwѕ building real-time wеb applications from scratch. It contains all the necessary front-end and bасk-end components (ѕuсh as frameworks, libraries, configuration tools, databases and mоrе) that аіd dеvеlореrѕ through the entire арр development life cycle, right from setup and development tо deployment.
-
-**Database Intеgrаtіоn**
-
-Thе Meteor ecosystem offers MongoDB dаtаbаѕе аѕ well as a frоnt-еnd rерrеѕеntаtіоn of MоngоDB called MiniMongo. Mеtеоr hаѕ a MongonAPI which ѕеаmlеѕѕlу іntеgrаtеѕ MоngоDB on thе back-end and Mіnіmоngо оn the frоnt-еnd. Thіѕ rеѕult іn faster page updates thus mitigating lаtеnсу.
-
-**Custom Package Manager**
-
-Meteor hаѕ іtѕ own сuѕtоm Pасkаgе Mаnаgеr which features thе necessary NPM funсtіоnаlіtіеѕ аnd ѕоmе additional funсtіоnаlіtіеѕ. Mеtеоr'ѕ оffісіаl rероѕіtоrу of Meteor packages named аѕ аtmоѕрhеrе.jѕ fеаturеѕ mоrе thаn 2,600 smart расkаgеѕ. Mеtеоr has a buіlt-іn расkаgе to hаndlе pre-processing аnd сuѕtоm uѕеr аuthеntісаtіоn fоr Email, Facebook, Twіttеr, Gооglе аnd mоrе. Mоrеоvеr, іt аlѕо соmеѕ wіth requisite расkаgеѕ for рорulаr frаmеwоrkѕ lіkе Bасkbоnе.jѕ, Bооtѕtrар аnd jQuеrу.
-
-**Front-end Solution**
-
-Mеtеоr оffеrѕ іѕоmоrрhіс APIs that соmmunісаtе between front-end and bасk-еnd. Thіѕ allows developers tо hаndlе сlіеnt-ѕеrvеr mаnаgеmеnt and server-session management with еаѕе. Dаtа соmmunісаtіоn bеtwееn сlіеnt аnd ѕеrvеr hарреnѕ automatically wіthоut hаvіng tо write аnу bоіlеrрlаtе code.
-
-**Meteor uses DDP**
-
-DDP is like 'REST for websockets': a simple protocol for fetching structured data from a server and receiving live updates when data changes.
-
-**Radically Less Code**
-
-Meteor allows you to accomplish in 10 lines what would otherwise take 1000, thanks to a reactive programming model that extends all the way from the database to the user's screen.
-
-Wіth so mаnу exciting features іn іtѕ kіt, Mеtеоr is soon tо bесоmе аn ideal JаvаSсrірt dеvеlорmеnt platform. Moreover, іt is bасkеd and fundеd by a vast соmmunіtу of developers who аrе соmmіttеd tо іmрrоvе the Meteor funсtіоnаlіtу and fеаturеѕ fоr optimizing іtѕ performance. Alоng wіth it уоu саn аlѕо find a meteor dеvеlорmеnt company that рrоvіdеѕ уоu platform tо lеаrn Meteor.
-
-[1]: ./images/meteor_framework-1.png
diff --git a/posts/6-reasons-to-choose-meteor/images/meteor_framework-1.png b/posts/6-reasons-to-choose-meteor/images/meteor_framework-1.png
deleted file mode 100644
index 39b0d2b..0000000
Binary files a/posts/6-reasons-to-choose-meteor/images/meteor_framework-1.png and /dev/null differ
diff --git a/posts/7-practices-to-follow-when-you-offshore-development/7-practices-to-follow-when-you-offshore-development.md b/posts/7-practices-to-follow-when-you-offshore-development/7-practices-to-follow-when-you-offshore-development.md
deleted file mode 100644
index fec25a8..0000000
--- a/posts/7-practices-to-follow-when-you-offshore-development/7-practices-to-follow-when-you-offshore-development.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-templateKey: 'blog-post'
-title: '7 practices to follow when you offshore development'
-date: 2013-06-19
-featuredpost: false
-description: >-
- Learn what key factors to consider before hiring an offshore web development partner. Codebrahma is an offshore web application development firm.
-author: Anand Narayan
-link: /7-practices-to-follow-when-you-offshore-development
-category:
-- Research and Articles
-tags:
-- web application development
----
-
-
-Clients tend to feel concerned when they offshore their development. They worry if the dev team will align with their thought process. Here are a few methods to have a very efficient offshoring process.
-
-### Stand up calls
-
-Have Stand up skype calls in the morning. Talk about the progress made the previous day, and clear questions/clarifications if any. Make sure you get a brief about what your development team is going to be working on today.
-
-Just make sure that it does not become a mere ritual of snoozing off reminders. The more you interface, the lesser you have to test / re-do later.
-
-### Project Management Tool
-
-Have a project management tool like Pivotal Tracker, where you **_write_** down all your user stories. Having your user stories written down in one place is very critical. This is the one sacrosanct document. Everyone refers to this and basis their work on what is written here.
-
-Tip: Add your attachments to your user stories. If you want your banner changed. Add the new banner here. If there are a lot of files, share the link to the Dropbox folder here.
-
-Instead of debating on a tool, pick just any that your development team is comfortable with. The best way to manage a project is to avoid emails. Unstructured communication without trace-ability is what you are signing up for with email-led project management.
-
-### Give Feedback
-
-The **_Agile_** methodology of software development is all about **_Feedback_** . As the project flows, you tend to communicate your concerns and modify/add requirements during the Stand up calls. Make sure that you add the changes to the project management tool. Remember that is the sacrosacnt document. I would encourage you to add/clear doubts as comments on the user stories. This establishes the thought process on that user story throughout the team. This gives more flexibility to the development team, as no one will miss the context or progress.
-
-Your app development team may not always be the one who leads the product development activity (let's say you get funded and you can now build your own team!). Context of what decisions were made, will go a long way to avoid handover disruptions.
-
-### Bring a story to closure / Delivery and Review
-
-The status of every user story should be available in your project managment tool. Typically the user stories go through the following phashes
-
-Started -> Finished -> Delivered -> Accepted/Rejected
-
-Accept or Reject a story within a day after it has been pushed to you. This keeps the developer from building on top of a rejected story and helps instant re-prioritization.
-
-The first step in any project is to GET YOUR STAGING SERVER READY. This enables you to visualize the development of your project.
-
-Review daily. Review as soon as your developer delivers a user story. The quicker you review the user stories, the quicker your project is delivered.
-
-### Create a sense of urgency and importance around deadlines
-
-If you don't have a launch date in mind and there is nothing that's show-stopping if you don't get it out on a set date, you are inviting procrastination. Set an external / uncontrollable deadline and communicate that you've vested to that deadline. It gets you and the team to the discipline of launching.
-
-While time estimates in software development are never accurate, let that not be an excuse to not ship. Just as you launch your customers may lead you to what they want (which could be different from what you built). So be pragmatic. Launch fast. Escape the guilt of 'perfecting as a way of avoid customer scrutiny!'
-
-### Quality
-
-Optimize for quality very early. If you understand code,review code regularly in the early stages. Give feedback on the coding style, the way the functions are named, the tabspaces. Is the code test driven? Developers spend more time fixing and optimizing code than writing it afresh. When you have found success with your early iterations and are moving towards a stable product, invest in engineering scalability – Test Driven Development is one of first initiatives you'd have to adopt!
-
-Building a product is not a discrete one step activity as many entrepreneurs who outsourced, think it to be. It's just the beginning of a long conversation with your customer base and the interaction would put your product to harsh usage that you have not planned for. So before you outsource, think beyond the first release. Think about continuous investment in engineering and build capacity to manage that process!
-
-What process did you follow when you offshored? What worked for you and what didnt? Leave a comment
-
-If you are looking for [AngularJS Development Company][1], just send us a mail and we will take it forward.
-
-[1]: /angularjs-development-company
-
-
\ No newline at end of file
diff --git a/posts/7-reasons-to-choose-react-native-for-development/7-reasons-to-choose-react-native-for-development.md b/posts/7-reasons-to-choose-react-native-for-development/7-reasons-to-choose-react-native-for-development.md
deleted file mode 100644
index e2370c1..0000000
--- a/posts/7-reasons-to-choose-react-native-for-development/7-reasons-to-choose-react-native-for-development.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-templateKey: 'blog-post'
-title: '7 Reasons Why React Native is the Future'
-date: 2016-03-28
-featuredpost: false
-description: >-
- With the world of mobile, mainly split into two operating systems, developing apps that run for both the operating systems is a tedious process. So Facebook has launched React Native, a platform that helps developers reuse the code that was
-keywords:
-- Why React native
-- React native development
-- Reactjs development
-- Reactjs experts
-- Reactjs development company
-- Reactjs hackers
-author: Raviraj Hegde
-link: /7-reasons-to-choose-react-native-for-development
-category:
-- Research and Articles
-tags:
-- React
-- react native
-- React js development company
-- Reactjs Developers
-- Reactjs experts
----
-
-With the world of mobile, mainly split into two operating systems, developing apps that run for both the operating systems is a tedious process. So Facebook has launched React Native, a platform that helps developers reuse the code that was developed for either Android or IOS on the other platform as well without having to start coding apps right from scratch.
-
-Let's look at some reasons that point towards React Native taking the centre stage in the future.
-
-1. **Covers major mobile Operating Systems**
-
-React native has the major drawback covered i.e. developing apps for two different platforms without have to start coding right from beginning. It allows developers to use the same code for developing apps on other platforms as well.
-
-2. **Can reuse code that is already written**
-
-This is the most remarkable feature of react native, as it can save developers a lot of time and efforts. Reusing a code can help developers focus more on providing its users with better user interface and new applications.
-
-3. **Efficiency**
-
-React is known to be effective in providing agility, speed and an overall good user experience. It uses the ReactJS framework to provide native experience to its users.
-
-4. **It is compatible with third party plugins**
-
-With React Native, you can integrate third party apps in your app. It means, you can use the functionality of other native apps of the device in react native and vice versa.
-
-5. **Easy to use**
-
-The level of difficulty with ReactJS is much less when compared to other options available. If you are good at javascript then learning to code with React Native is an easy task.
-
-6. **Popular Javascript Framework among programmers**
-
-It uses ReactJS framework, a framework that was developed by facebook in 2013 and by now is already famous among developers. Its ease of learning and popularity makes Native a hope for the future of app development
-
-7. **Focused on User interface**
-
-React Native is more focused on user interface unlike AngularJs and MeteroJS. It gives users a highly responsive interface with the help of asynchronous Javascript interactions between React Native and the Native environment of the device. This inturn increases the app's load time and keeps it running smoothly without interruptions.
-
-So you can get started with using React Native as your platform for app development and create your first app for both Android and IOS devices with ease. The tutorials for it are made available on facebook's react native page on Github.
-
-PS: If you are looking for [React Native Developers][1], then do contact us
-
-[1]: /react-js-development/
-
diff --git a/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/7-reasons-to-choose-spree-commerce-for-ecommerce-development.md b/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/7-reasons-to-choose-spree-commerce-for-ecommerce-development.md
deleted file mode 100644
index 1e3c5aa..0000000
--- a/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/7-reasons-to-choose-spree-commerce-for-ecommerce-development.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-templateKey: 'blog-post'
-title: '7 Reasons to Choose Spree Commerce'
-date: 2015-12-04
-featuredpost: false
-description: >-
- Choosing right technology for your e commerce startup is the key to success. Explaining why Spree Commerce will be the best Ecommerce platform of choice.
-keywords:
-- Spree commerce
-- Ecommerce platform
-- Choosing spree commerce
-author: Raviraj Hegde
-link: /7-reasons-to-choose-spree-commerce-for-ecommerce-development
-category:
-- Research and Articles
-tags:
-- Rails Ecommerce Development
-- Ruby on rails development
-- spree commerce
----
-
-
-Setting up an e-commerce venture is a difficult and challenging. In addition to the business agenda, you also have to consider design, development, hosting, a content management system, a robust backend and the user experience. Juggling all of these facets is certainly not easy, but some of them can be simplified with a development framework like Spree commerce. Spree is an open source e-commerce and web application framework based on Ruby on Rails. In a market crowded with software with very similar features, here are seven reasons why Spree trounces its competition hands down.
-
-![spree-commerce][1]
-**RAPID DEVELOPMENT**
-
-Spree commerce implementation covers all the core functionalities of the e-commerce platform. A developer can just build the website by adding spree commerce to the project. Spree comes with far more supported payment gateways and language modules right out of the box. Spree also has lot of free extensions which supports additional features like blogging, multi-domain support and etc.
-
-**SUBSET OF RUBY ON RAILS**
-
-Spree is written in Ruby on Rails, itself a very popular and stable open source development platform. This also ensures that extensions and ancillary code written in Ruby on Rails also work well with Spree with very little additional shoehorning. You benefit from both the Spree community and the wider Ruby on Rails community.
-
-**CUSTOMISATION**
-
-Spree is backed up by a plethora of extensions, both official as well as those written by the wide community who use and continue to develop Spree. Being based on Ruby on Rails, integrating these extensions while development will allow you to access the variety of community developed tools written for Ruby on Rails. You can rest assured that your venture will look exactly as you want it to, thanks to the intense customizability that Spree affords.
-
-![shopping-cart-1080841_1920 \(1\)][3]
-
-**MOBILE READY**
-
-Spree has been widely tested for compatibility on mobile devices and it has certainly passed with flying colours. It is very easy to implement responsive design elements and optimise the site on small handheld devices using Spree. Considering that mobile devices also have limited processing power, sites designed using Spree also fare better on usability and battery consumption than those that are designed otherwise.
-
-**RICH DOCUMENTATION AND COMMUNITY SUPPORT**
-
-Spree Commerce maintains a variety of in-depth user guides that help new developers and companies work with. Implementing Spree in their websites can be performed with minimal effort and resource utilisation. The broader Spree community also ensures that any doubts or question you have do not go unaddressed.
-
-**RELIABILITY**
-
-Spree is open source software, meaning that it has a large public body of users that continue to maintain and develop the software. In addition to being written in Ruby on Rails, which is a very popular and stable platform, the open source nature ensures that any bugs that are found are fixed immediately and new features are constantly added and tested before being rolled out to the general public. Just to showcase actual figures, Spree has been downloaded 349,067 times as of June 3rd, 2015.
-
-**SCALABILITY**
-
-Spree is an extremely robust framework and is capable of handling huge amount of traffic. Several industry standard benchmarks using NewRelic or Google Analytics show in a standard volume-testing scenario, which simulates a large number of users simultaneously accessing the website, response time does not increase by any significant margin. Spree is capable of handling large amounts of traffic better than most paid development solutions.
-
-
-In conclusion, we would like to recommend you the team of professional Ruby on Rails developers that focuses on creating robust and efficient e-commerce systems. Codebrahma team has already implemented and launched several successful e-commerce projects. Whether you are an e-commerce beginner or a large-scale businessman, you will get a cost-effective solution for your budget. Be smart, use Spree Commerce and boost your sales to space.
-
-[1]: ./images/spree-commerce.jpg
-[3]: ./images/shopping-cart-1080841_1920-1-1024x681.jpg
-
\ No newline at end of file
diff --git a/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/images/shopping-cart-1080841_1920-1-1024x681.jpg b/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/images/shopping-cart-1080841_1920-1-1024x681.jpg
deleted file mode 100644
index 13b63f5..0000000
Binary files a/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/images/shopping-cart-1080841_1920-1-1024x681.jpg and /dev/null differ
diff --git a/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/images/spree-commerce.jpg b/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/images/spree-commerce.jpg
deleted file mode 100644
index d216b7b..0000000
Binary files a/posts/7-reasons-to-choose-spree-commerce-for-ecommerce-development/images/spree-commerce.jpg and /dev/null differ
diff --git a/posts/9-best-node-js-frameworks-developers/2016-06-26-9Best-NodeJS-Frameworks-for-Developers.md b/posts/9-best-node-js-frameworks-developers/2016-06-26-9Best-NodeJS-Frameworks-for-Developers.md
deleted file mode 100644
index 93439d0..0000000
--- a/posts/9-best-node-js-frameworks-developers/2016-06-26-9Best-NodeJS-Frameworks-for-Developers.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-templateKey: 'blog-post'
-title: '9 Best NodeJS Frameworks for Developers'
-date: 2016-06-26
-featuredpost: false
-description: >-
- NodeJS provides one of the most innovative solutions to building web servers. These best frameworks speed up your web application development.
-keywords:
-- NodeJS Development Company
-- NodeJS Developers fo hire
-- Hire NodeJS Developers
-- Node Development Company
-link: /9-best-node-js-frameworks-developers
-author: Aravindan
-category:
-- Research and Articles
-tags:
-- Node.js development
-- Nodejs Projects
-- web application development
----
-
-Node.js is an open-source, cross-platform runtime environment built on Chrome's V8 javascript engine. It is used to build fast, scalable server-side web applications. The event-driven, non-blocking I/O model makes Node.js lightweight and efficient. These features have motivated a lot of developers to adopt Node.js. Today, let us see the list of 9 best Node.js frameworks for developers.
-
-### BEST NODEJS FRAMEWORKS
-
-[Hapi.js](http://hapijs.com/)
-
-Hapi is a powerful and robust framework that is used for developing APIs. It was first introduced by Eran Hammer 2011 at Walmart while trying to handle the traffic on black Friday. The well-developed plugin system and various key features such as input validation, configuration-based functionality, implement caching, error handling, logging and more makes the Hapi one of the most preferred frameworks. It is used for building useful applications and providing technology solutions by several large-scale websites such as PayPal, Disney.
-
-[Express.js](http://expressjs.com/)
-
-Express.js was built by TJ Holowaychuk, one of the members of core Node project team. A large community backs this framework, therefore it has the advantage of continuous updates and reforms of all the core features. This is a minimalist framework that is used to build a number of mobile applications and APIs.
-
-[Socket.io](http://socket.io/)
-
-It is used for building real time web applications. Its a Javascript library that allows the bidirectional data flow between the web client and server. Asynchronous data I/O, binary streaming, instant messaging are some of the most important features of this framework.
-
-[Koa.js](http://koajs.com/)
-
-Introduced in 2013, this futuristic framework is used to make the process of writing web applications and REST apis more enjoyable. It is basically an expressive middleware for Node.js that uses generators. The limited use of callbacks makes the generators a more effective methodology of error mitigation.
-
-[Meteor.js](https://www.meteor.com/)
-
-One of the most used frameworks in the Node.js world. Backed by a huge community of developers, tutorials, custom packages and documentation, this framework is used to create some great web and mobile applications for only Javascript only.
-
-[Mojito](https://github.com/yahoo/mojito)
-
-Yahoo!cocktail is a mobile development platform. Mojito is a framework loosely based on the Yahoo!cocktail. Since the Yahoo!cocktail is completely written in javascript, the mojito can run both on the server side as well as client side. Mojito is an MVC (model-view-controller) framework having a host of features.
-
-[Derby](http://derbyjs.com/)
-
-This is an MVC framework that is used for creating real-time mobile and web applications. Derby's Racer, a real-time data synchronization engine for Node.js allows multi-site, real-time concurrency and data synchronization across clients and servers. The racer optimizes conflict resolution and allows real time editing of the application by leveraging the ShareJS.
-
-[Sails.js](http://sailsjs.org/)
-
-This is yet another MVC framework that has become very popular with Node.js developers. The framework has gained traction through the development of chat applications, dashboards and multi player games. It is most famous for building data-driven APIs. It uses waterline for object related mapping and db solutions. This framework uses Express.js for handling HTTP requests and is built upon Node.js. Its compatibility with Grunt modules, including LESS, SASS, Stylus, CoffeeScript, Jade, Dust makes Sails.js an ideal candidate for browser based applications.
-
-[Total.js](https://www.totaljs.com/?language=en)
-
-Total.js is a modern and modular Node.js supporting the MVC architecture. Angular.js, Polymer, Backbone.js, Bootstrap and more client-side frameworks are fully compatible with this framework. This framework is totally extensible and asynchronous. The fact that it does not require any tools such as Grunt to compress makes it easy to use. It also has NoSql embedded in it and supports array and other prototypes.
-
-**Conclusion**
-
-The internet age is the time of rapid changes and development. Every day the applications that are developed are becoming more advanced. Each and every framework on this list have different features and are suitable for different kind of applications. Node.js is influencing the development of advanced applications and this list gives you the comprehensive list of the most popular frameworks that are used by developers.
-
-Do you think any other framework needs to be added to the list? Go ahead and add them to the comments and we can discuss.
diff --git a/posts/ReactJS+Development+productivity/2017-10-22-Atom-setup-to-improve-reactJS-development-productivity.md b/posts/ReactJS+Development+productivity/2017-10-22-Atom-setup-to-improve-reactJS-development-productivity.md
deleted file mode 100644
index ec9fc1c..0000000
--- a/posts/ReactJS+Development+productivity/2017-10-22-Atom-setup-to-improve-reactJS-development-productivity.md
+++ /dev/null
@@ -1,152 +0,0 @@
----
-templateKey: blog-post
-title: Atom setup to improve reactJS development productivity
-date: 2017-10-22
-description: >-
- Whether you are a coder who specializes in ReactJS development services, AngularJS development services, or React native Development services this atom editor setup is sure to drastically improve your productivity. This list is divided into two sections Utlities
-featuredpost: false
-featuredimage: /img/flavor_wheel.jpg
-author: Prasanna
-link: /ReactJS+Development+productivity
-category:
-- Development
-tags:
-- react js
-- reactjs
----
-Whether you are a coder who specializes in ReactJS development services, AngularJS development services, or React native Development services this atom editor setup is sure to drastically improve your productivity.
-
- 
-
-_This list is divided into two sections Utlities and ReactJS Development specific packages:_
-
-
-# Utilities:
-
- 
-
-## (1) Atom-transposee3
-
-Atom’s alt+t (transpose) is like a string flip. Sublime’s would switch two selected strings one with another, which is a much more useful behavior.
-
-## (2) Case-keep-replace
-
-With this package you can replace given string with another while preserving its original case.
-
-## (3) Change-case
-
-A quick way to change the case of your current selection. From camelCase to snake_case etc.
-
-## (4) Copy-path
-
-Copy a file path flexibly.
-
-## (5) Duplicate-line-or-selection
-
-It duplicates the selection if there is one, otherwise, duplicates the line.
-
-## (6) Editorconfig
-
-It helps developers maintain consistent coding styles between different editors
-
-## (7) Git-plus
-
-It makes commits and other git things without the terminal
-
-## (8) Highlight-selected
-
-Just double click on a word to highlight it throughout the open file.
-
-## (9) Local-history
-
-It is a package for maintaining local history of files .
-
-## (10) Project-manager
-
-It helps you get easy access to all your projects and manage them with project specific settings and options.
-
-## (11) Related
-
-Related provides a quick way to access files that are “related” to the file currently opened. For example, switching between .js and .spec.js files.
-
-## (12) Set-syntax
-
-It will creates easy Command Palette entries for setting the syntax of the current file.
-
-## (13) Sort-lines
-
-It will sort and remove duplicated lines.
-
-## (14) Tab-foldername-index
-
-The plugin replaces tab’s title if the index is opene.* file for more readability
-
-## (15) Sync-settings
-
-It will synchronize settings,user styles,keymaps, snippets, init script and installed packages across Atom instances. I back up all my settings to Gist and sync between work/personal computers.
-
-## (16) Toggle-quotes
-
-Toggle a single-quoted string to a double-quoted string (and ticks ` in JS!)
-
-# _HTML/CSS/JS/React Specific Packages:_
-These packages are specific for ReactJS development , HTML, and CSS.
-
-## (1) Atom-ternjs
-
-JavaScript code intelligence for atom with Tern. Adds support for ES5, ES6, ES7, Node.js, jQuery, Angular and more. Extendable via plugins. Uses suggestion provider by autocomplete-plus.
-
-## (2) Atom-wrap-in-tag
-
-It wraps tags around a selection
-
-## (3) Autoclose-html
-
-It will automatically add closing tags when opening tag is completed.
-
-## (4) Autocomplete-modules
-
-With this package autocomplete for require and import statements.
-
-## (6) Docblockr
-
-Helps write documentation faster.
-
-## (7) Emmet
-
-A plugin which will greatly improves your HTML & CSS workflow and help your ReactJS development projects.
-
-## (8) es6-javascript
-
-A collection of commands and ES6 focused snippets for optimizing modern Javascript development productivity.
-
-## (9) Pigments
-
-A package to display colors in project and files.
-
-## (10) Linter-eslint
-
-This linter plugin for Linter provides an interface to eslint. It can be used with files that have the “JavaScript” syntax.
-
-## (11) Tree-view-copy-relative-path
-
-It allows you to copy relative path to file from tree view.
-
-## (12) Lodash-snippets
-
-Some snippets to quickly use Lo-Dash Library in Atom.
-
-## (13) Language-babel
-
-JavaScript ES201x, React JSX, Flow and GraphQL Grammar. Babel Transpiler
-
-## (14) React-es7-snippets
-
-React ES7 snippets for atom
-
-## (15) Atom-jest-snippets
-
-Snippets for Jest testing framework
-
-_Looking to hire a [ReactJS services company ?](/)_
-
diff --git a/posts/ReactJS+Development+productivity/images/1508558233_tmp_images__1_.jpg b/posts/ReactJS+Development+productivity/images/1508558233_tmp_images__1_.jpg
deleted file mode 100644
index 2c87ead..0000000
Binary files a/posts/ReactJS+Development+productivity/images/1508558233_tmp_images__1_.jpg and /dev/null differ
diff --git a/posts/ReactJS+Development+productivity/images/1508642504_tmp_atom-icon.jpg b/posts/ReactJS+Development+productivity/images/1508642504_tmp_atom-icon.jpg
deleted file mode 100644
index d596f8f..0000000
Binary files a/posts/ReactJS+Development+productivity/images/1508642504_tmp_atom-icon.jpg and /dev/null differ
diff --git a/posts/ReactJS+Development+productivity/images/1508647118_tmp_3.jpg b/posts/ReactJS+Development+productivity/images/1508647118_tmp_3.jpg
deleted file mode 100644
index a72bd97..0000000
Binary files a/posts/ReactJS+Development+productivity/images/1508647118_tmp_3.jpg and /dev/null differ
diff --git a/posts/adobe-xd-vs-sketch/adobe-xd-vs-sketch.md b/posts/adobe-xd-vs-sketch/adobe-xd-vs-sketch.md
deleted file mode 100644
index 3f33b64..0000000
--- a/posts/adobe-xd-vs-sketch/adobe-xd-vs-sketch.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Adobe XD vs Sketch'
-date: 2016-06-23
-featuredpost: false
-description: >-
- Everything you need to know about the all new adobe XD and how it can help you with your designing project. Quick overview of Adobe XD vs Sketch.
-keywords:
-- adobe xd vs sketch
-- adobe experience design
-- adobe xd
-- sketch
-- UI development
-link: /adobe-xd-vs-sketch
-category:
-- Development
-author: ARAVINDAN
-tags:
-- adobe xd
-- sketch
-- UI design tools
----
-
-In today's digital age, customer acquisition is the key factor for the success of any business. The experience of the user when visiting the website of your business determines whether you have a continued association with the customer. A lot of companies today are investing quite a bit into designing the user interface. As developers, our most important aid in determining user experience is the user experience design tool that we choose.
-
-Until recent times the UI design tool market was dominated by two giants, the photoshop and the sketch. Since the photoshop is not a tool that was originally designed for UI development, sketch always seemed to lead the way. Last year adobe decided to put an end to this lag by announcing, '[the project comet][1]'. In march, this year adobe launched the [demo][2] of this product with a new name, 'Adobe experience designer' or Adobe XD.
-
-## Say Hello to Adobe XD
-
-
-Adobe XD is promoted as the first all in one tool for UI developers. The journey from wireframes to interactive prototypes has been made immensely simple with this tool. Adobe XD it enjoys the unfair advantage of seamless integration with Photoshop and integrator. The Photoshop and integrator are the most common design tools currently used by all designers, thereby giving the adobe xd a huge advantage in terms of customer familiarity and preference.
-
-## What's so cool about the Adobe xd?
-
-### Seamless integration with your photoshop.
-
-As already mentioned, the seamless integration with photoshop and illustrator remains as the biggest advantage of this software. The integration is so simple that you can directly copy paste your photoshop cc and illustrator cc assets in HQ
-
-### Video Walkthrough
-
-Creating an amazing UI is just the beginning of creating great user experience. Conveying the features of your design to the stakeholders is equally important. Adobe xd allows you to record a .mov file as you move through the various steps in your preview. This video can be shared with your team and stakeholders for more effective communication.
-
-### In-App Prototyping
-
-The general market has provided a positive feedback for adobe xd so far. The well designed, easy to use interface is making the adobe xd a worthy opponent for the acclaimed sketch. The ability to toggle between development and prototyping without leaving the application is a great advantage for adobe xd. This particular feature in adobe xd is going to make the product standout in terms of ease of use for the designers.
-
-### Prototyping becomes more fun
-
-Once the designing phase of your application is done,it's time for prototyping. The prototype of your design allows you to practically demonstrate the power of your design to all the developers and the stakeholders. Adobe xd has brought in a new life to the prototyping process. Small changes made to the prototyping process has made it much more fun to deal with.
-
-For example, Once we design all the individual pages of our web app, we will need to connect the pages in the way that we want the end-user to access it. The adobe xd allows us to connect one page to another by simply dragging a curvy arrow across the artboard, connecting the source page to target page.
-
-![AdobeXD_hero][3]
-
-### Bid adieu to copy paste
-
-The new 'Repeat grid' feature saves the developers the pain of copy pasting. In previous years whenever the application had repeated elements such as boxes, the elements had to be copy pasted while carefully preserving the spacing between the items. Those days are gone. The adobe xd allows the developer to repeat the elements using the repeat grid.
-
-### Keep it simple stupid!
-
-The simplicity of new UI of adobe xd is one of its greatest strengths. The simple greyscale UI with its minimalist icons makes the designing process simpler and effective. This fundamental difference would give the adobe xd a big mileage in the competitive market.
-
-## So what's the catch?
-
-Though all the above features paint a rosy picture, the truth is that there is no perfect software in the world. Every new tool has its own set of shortfalls. Let us see what the critics of adobe xd are claiming
-
-### Limited Prototyping Feature
-
-Though prototyping within your design application is a great advantage in terms of usage, the adobe xd does not contain all the features of a full-fledged prototyping tool such as invision.
-
-### Hex code
-
-The simplistic user interface is really good to work with but some of the most important features are missing. For example, the colour picker looks really good until you click on it to find out that the option to enter the hex code is missing
-
-###
-
-## Adobe XD Vs Sketch: The verdict
-
-## ![XD \(1\)][4]
-
-Sketch has remained as the most popular designing tool for quite some time now. There are a number of features that make it the favourite of many UI developers. The years of existence in the market and the number of modifications has made sketch a mature software that can actually aid in the making of great user experiences. Since it is specifically designed for developing UI it was able to successfully overcome the limitations of its predecessors such as adobe photoshop. The lack of subscription model also makes it really beneficial to a lot of developers.
-
-On the other hand, the Adobe xd is a new software that has been ambitiously placed as the one stop solution for all designing needs. The excruciating effort of the adobe team has paid off and the product has met most of its expectations. But with its simplistic approach and lack of some advanced features, it rather feels as a UI tool for beginners. With time and few modifications, the adobe xd has the potential to be the ideal competitor for the well-established sketch.
-
-Got a chance to try Adobe XD? Have your own thoughts or opinions on the topic. Feel free add them to the comments section and let us discuss.
-
-[1]: http://blogs.adobe.com/creativecloud/introducing-project-comet-a-new-tool-for-designing-and-prototyping-user-experiences/
-[2]: https://www.adobe.com/products/experience-design.html?promoid=7DRZ6NXX&mv=other
-[3]: ./images/AdobeXD_Hero-1024x642.png
-[4]: ./images/XD-1.jpg
diff --git a/posts/adobe-xd-vs-sketch/images/AdobeXD_Hero-1024x642.png b/posts/adobe-xd-vs-sketch/images/AdobeXD_Hero-1024x642.png
deleted file mode 100644
index f6b1ce3..0000000
Binary files a/posts/adobe-xd-vs-sketch/images/AdobeXD_Hero-1024x642.png and /dev/null differ
diff --git a/posts/adobe-xd-vs-sketch/images/XD-1.jpg b/posts/adobe-xd-vs-sketch/images/XD-1.jpg
deleted file mode 100644
index 099e7ff..0000000
Binary files a/posts/adobe-xd-vs-sketch/images/XD-1.jpg and /dev/null differ
diff --git a/posts/an-overview-of-fintech/2017-04-12-AN-OVERVIEW-OF-FINTECH.md b/posts/an-overview-of-fintech/2017-04-12-AN-OVERVIEW-OF-FINTECH.md
deleted file mode 100644
index a56ba33..0000000
--- a/posts/an-overview-of-fintech/2017-04-12-AN-OVERVIEW-OF-FINTECH.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'AN OVERVIEW OF FINTECH'
-date: 2017-04-12
-featuredpost: false
-description: >-
- Fintech is the newest, in-vogue term circling the entrepreneurial sector. But a lot of people yet don't have a firm grasp on Fintech. We're here to help.
-author: Anand Narayan
-link: /an-overview-of-fintech
-category:
-- Business
-tags:
-- Fintech
-- overview of fintech
----
-Fintech is the newest, in-vogue term making circles in the entrepreneurial sector. Despite the popularity, many still don’t have a clear handle on what this term entails. In this article, we try to demystify Fintech and all the noise around it.
-
-## What is Fintech
-Simply put, Fintech is an aggregation of terms Finance and Technology. It’s an umbrella term for all technology and [software development around financial services](/financial-software-development-company/) and products. Finance has always been considered, a somewhat difficult concept for the general masses.
-
-Any startup that is working in the Fintech market is looking to use technology to improve the current system of transactions, payments, loans, fundraising, investments or portfolio management. This could be geared towards the general mass or could be in the B2B segment.
-
-
-
-The rise of interest and investments in Fintech companies has been phenomenal. Accenture reported that the global investment in Fintech companies was around $930 million back in 2008 which has jumped to a massive over $12 billion in the beginning of 2015. In an sector that is heavily marred by red tape, bureaucracy and regulations, the massively growing interest only shows that there is much to be done.
-
-## What Does Fintech Cover
-Fintech being an umbrella term, covers any technological disruption related to finance. Some of the more popular categories under Fintech are:
-
-## Lending & Financing
-The business of money lending and financing has largely been owned by banking institutions and big non-banking financial institutions so far. But we are seeing a lot of disruption in this market by startups looking to make this process peer-to-peer. Prosper and Lending Club are two of the most well known startups in the lending market.
-
-Instead of approaching banks and applying for loans, these startups have enabled people to borrow and lend money to others through their platform. Democratization of loan and transparency in operations, coupled with data-driven decisions makes for a much better experience for both the parties. And this has allowed the startups to keep interest rates lower than bank.
-
-## Payments and E-Wallets
-Digital payments, e-wallets and mobile wallets have made a huge impact on how people transact. A natural extension of digital payments, mobile wallets let users store money and credit cards on their mobile devices and transact through their phones without ever opening their actual wallet. Google’s Android pay and Apple’s Apple Pay are two of the most well known digital wallets.
-
-Payal has been considered as one of the pioneers of the digital payments industry. Post its acquisition by eBay, Paypal payments rapidly gained popularity and became the choice of payment method for majority of eBay users. This led to a chain effect, giving rise to a whole new segment concerned with digital payments – payment gateways, security companies and fraud detection softwares etc to name a few.
-
-## Financial Management
-Startups looking to improve the way people manage their personal finances fall under the category of financial management. Apps, chatbots, websites designed to help people manage money and invest better are all part of it. Young adults and the younger generation of Millennials are in much more need to the right money management ways thanks to the rising number of loans and general financial dissatisfaction. CreditKarma, Mint and Envestnet are some of the more well known startups working towards financial management. Abe, Cleo and Plum are some of the chatbots that are working towards making banking more conversational, personal and accessible.
-
-
-
-
-There’s a lot of excitement when it comes to Fintech. People who are closely related to the industry believe that Fintech will fundamentally change and improve finance. One very obvious improvement, that every industry disrupted by technology has seen – lowering of costs and improvement of services. Companies like Payoneer and TransferWise are already providing ways to transfer money internationally, at much lower prices.
-
-The other improvement that we’re likely to see is better, data-driven decision making. Technology companies are able to identify better loan prospects based on algorithms driven by millions of data points. This is effectively able to overcome human bias and prejudice.
-
-Fintech is at a very nascent stage. There is a huge opportunity for entrepreneurs, as well as companies dealing in financial sector to take advantage of. If you have any ideas around Fintech that you’d like us to help you shape up –[ drop us a line](/contact-us). We’re firm believers of technology making people’s lives easier!
\ No newline at end of file
diff --git a/posts/an-overview-of-fintech/images/20150509_LDC934.png b/posts/an-overview-of-fintech/images/20150509_LDC934.png
deleted file mode 100644
index ea765dd..0000000
Binary files a/posts/an-overview-of-fintech/images/20150509_LDC934.png and /dev/null differ
diff --git a/posts/an-overview-of-fintech/images/overview-fintech-1.jpg b/posts/an-overview-of-fintech/images/overview-fintech-1.jpg
deleted file mode 100644
index 628f3b9..0000000
Binary files a/posts/an-overview-of-fintech/images/overview-fintech-1.jpg and /dev/null differ
diff --git a/posts/angular-2-overview/angular-2-overview.md b/posts/angular-2-overview/angular-2-overview.md
deleted file mode 100644
index 9f667b4..0000000
--- a/posts/angular-2-overview/angular-2-overview.md
+++ /dev/null
@@ -1,149 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'ANGULAR JS 2 : The Overview'
-date: 2016-05-16
-featuredpost: false
-description: >-
- The Angular 2 has reached release candidate stage. This Angular 2 Overview provides all you need to know to stay updated with the framework.
-keywords:
-- Angular 2 overview
-author: ARAVINDAN
-link: /angular-2-overview
-category:
-- Development
-tags:
-- Angular.js
-- Angular2
----
-
-Angular 2, Google's much awaited new framework has reached the release candidate stage. This indicates that the new framework will be available for general usage quite soon. The web development community awaits the newly upgraded framework with a million questions. There cannot be a better time to analyse the various aspects of the framework with a complete Angular 2 Overview.
-
-Angular JS is a Java script framework that is extensively used for the development of web based applications. It is an open-source framework maintained by Google and a community of individuals,corporations. Right from its launch in 2009, Angular JS has been continuously evolving to accommodate the rapidly developing changes in the world of internet. The current version of Angular JS, angular 1.5.5 is one of the most advanced versions of Angular JS available today.
-
-In October 2014 Google announced that Angular JS will go through some drastic changes and would be directly upgraded to Angular js 2.0. The web development community has been ablaze with a large number of questions about the Angular js 2. The launch of angular 2 beta version this year has only given way for more queries regarding the new upgrade. This Angular js 2 Overview is aimed at addressing some of these queries.
-
-## Why Angular 2.0?
-
-Google has announced the shift from all the Angular JS previous versions to angular 2 without any backward support. This is a radical decision. A paradigm shift in a widely used framework should definitely be backed by solid reasons. Let us analyse the reasons behind this shift.
-
-### Performance
-
-"Perform or Perish: The law of the jungle"
-
-Angular JS was initially designed by Google for designers who wanted to build persistent HTML forms quickly. It was later embraced by the developer community for building large and diverse web applications. This change in fundamental functionality meant that Angular JS had to be equipped with many new features to ensure a smooth development process. However there are some limitations on the improvements that can be made to Angular JS. This is due to the contradictions in the fundamental assumptions that were made while designing the framework. To overcome these limitations Google has re-designed the entire framework. Thus, it overcame a lot of performance issues that existed before.
-
-### Mobile
-
-Angular JS was introduced in 2009. Back then the proliferation of mobile devices such as cell phones and tablets had not yet started. Thus, the initial versions of Angular JS were not built with mobile devices in mind. Angular 2 is designed with mobile devices at its crux. The philosophy behind this decision is that, any framework that is built to handle mobile development will definitely be able to handle the desktop aspect of things.
-
-### The ever changing internet
-
-"Yesterday's technology is too old to hold good!"
-
-From the time Angular JS was designed, the internet has evolved drastically. Building applications on Angular JS that are cross browser compliant on the modern browsers is a difficult task. Developers had to come up with various workarounds and hacks to overcome this difficulty.
-
-Angular JS 2 is designed with ES6 and modern browsers in mind. this lets the designer focus on the code required to perform the functionality rather than the compatibility issues.
-
-### Modular
-
-Over the years, through the various stages of evolution, a number of modules have been added to Angular JS core. These have accumulated as extra baggage thereby affecting the performance of the framework. These modules have been removed from the core in angular 2 and they will be available in the angular's ecosystem of modules. The programmer can utilize these modules as per requirement.
-
-### User Friendly
-
-Angular JS is not a very user-friendly framework. The learning curve for the framework is also quite steep. The range of new features from derivatives to controller have been bolted on to Angular JS framework. This is the reason it still remains a framework of nerds. The angular 2 is designed with all the essential features in its core that would definitely be more user-friendly and much easy to learn.
-
-## Mixed Reaction
-
-"Change is the only thing that never changes"
-
-Right from the day Google announced a shift to Angular 2.0,the web development community has been quite skeptical about it. The announcement at ng conference that there will be no backward compatibility for the older versions of Angular JS created a lot of resentment about the shift. Migrating all the existing applications to Angular 2 remains the major concern of the web development community.
-
-## Angular 2 overview
-
-Angular 2 is a completely revamped framework that has undergone some significant changes. Let us see what some of these changes are:
-
-### React native and Angular 2 : The Marriage of Convenience
-
-One of the most fundamental change in Angular 2 is the separation of the framework into two:
-
-The core – This deals with components, services, router, directives, filters
-
-The renderer – This deals with DOM, CSS, animation, templates, web components, custom events, etc.
-
-The split in rendering has multiple benefits including improved performance. This split has also made it possible to render an Angular JS application with React. Adding a [library][1] will allow the developer to come up with Angular JS applications rendered with react native.
-
-### Typescript & Angular 2 : If you can't fight an enemy, join him
-
-Google and Microsoft join hands to develop Angular2 on typescript.( _The only time the products of these giants have been coupled together before is when we use IE to download chrome_)
-
-Until 2015 Angular 2 was supposed to be written in AtScript. AtScript is a superset of ES6 that uses Microsoft typescript's type syntax to generate runtime assertions instead of compile time checks. But in march 2015 Google came into an agreement with Microsoft. Now Angular 2 is being developed on Typescript. Microsoft has agreed to add decorators i.e annotations to its typescript language which is a strict superset of JavaScript. Thus, typescript emerged as the language for developing Angular 2 and also the recommended language for apps.
-
-### LAZY LOADING:
-
-The perpetual agony that a user faces when the page is continuously loading is not new to any netizen. The slow loading is a cause for major concern among the web community as it results in increased attrition rate.
-
-Angular 2 proposes a solution to this problem by lazy loading where the basic HTML content loads before the additional time-consuming code, thus allowing the user to view the main content of the page without waiting for the complete page to load.
-
-### Improved Dependency Injection : The Upgrade
-
-Dependency injection is one of the main advantages of Angular 1.x series. It is one of the main factors which has made Angular JS as the most preferred web development frameworks. Yet there were some issues that has created some discomfort for the developers.
-
-Angular 2 enters the arena,promising to solve all these issues. Some of the other important features such as child injector and lifetime/scope control are being added.
-
-### Child Injector:
-
-A child injector has the ability to inherit all the parent services but also the authority to override at the child level.
-
-### Templating and Data Binding:
-
-The template compilation process of Angular 2 is asynchronous in nature. Code based on module spec where the module loader will load the the dependencies by simply referencing them in the component definition.
-
-### Directives:
-
-Angular JS is equipped with 3 types of directives: Component, decorative & Template. The component creates the reusable components using encapsulated logic. The decorative as the name suggests will be used to decorate the elements. The template is used to create reusable templates.
-
-### Routing solution:
-
-The routers of Angular JS 1.x were designed only for handling simple test cases. But as the usage of the framework grew, more and more functionalities have been added on. The core of Angular 2 has been redesigned to handle all these functionalities with relative ease and more efficiency. Some of the additional features are:
-
-* Simple JSON-based Route Config
-* Optional Convention over Configuration
-* Static, Parameterized and Splat Route Patterns
-* URL Resolver
-* Query String Support
-* Use Push State or Hashchange
-* Navigation Model (For Generating a Navigation UI)
-* Document Title Updates
-* 404 Route Handling
-* Location Service
-* History Manipulation
-
-Some of the features of the new router that has created a buzz in the industry are:
-
-### Child router
-
-This feature enables the encapsulation of each subset into a separate component by providing its own router. This allows each subset to become a small application.
-
-### Design
-
-All the logic is built using a pipeline architecture which allows the developers to add new logics and delete default ones. It also allows the developers to make a server request for a user or raise data for a controller, while still in the pipeline.
-
-### Logging
-
-[Diary.js][2] is a very useful tool in Angular 2 that allows you to analyse where the time is consumed in your application thus facilitating the process of bottleneck identification.
-
-### Scope
-
-Angular 2 has decided to drop $scope in favour of ES6
-
-## Conclusion
-
-The Angular 2 has already reached its release candidate stage and should be available for general use quite soon. There has been a lot of speculation about its features and all of it will be put to rest once we have the final product. This overview is aimed at helping you be prepared for what to expect from the upgraded framework.
-
-Was this useful? Is there any feature that we missed out? Feel free to share your comments.
-
-P.S. If you're looking to [hire AngularJS developers][3], drop us a line!
-
-[1]: https://github.com/angular/react-native-renderer
-[2]: https://github.com/angular/diary.js/tree/master
-[3]: /hire-angularjs-development-company/
\ No newline at end of file
diff --git a/posts/angular-vs-react/angular-vs-react.md b/posts/angular-vs-react/angular-vs-react.md
deleted file mode 100644
index 1952c5f..0000000
--- a/posts/angular-vs-react/angular-vs-react.md
+++ /dev/null
@@ -1,124 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Angular Vs React'
-date: 2016-04-19
-featuredpost: false
-description: >-
- A complete analysis of angular vs react to determine which is best suited for the applications that you are building. Contact us to hire react developers.
-keywords:
-- React development company
-- Angularjs development company
-- angularjs developers
-- react js developersevelopment company
-author: ARAVINDAN
-link: /angular-vs-react
-category:
-- Development
-tags:
-- AngularJS Development
-- React
-- react js
-- reactjs
-- React js development company
-- Reactjs Developers
-- web application development
----
-
-Angular is a** complete structural framework **that is used for developing dynamic web applications.Though there are many frameworks such as backbone, jquery etc. Angular js has remained the most popularly used framework. It is was created to overcome the limitations present in the existing technologies.The fundamental functionality of Angular js is to extend the vocabulary of HTML to express the applications components as accurately as possible. Angular js provides a complete client side solution for building dynamic web apps. It is used to ease the process of development by providing a greater level of abstraction.It is best suited for CRUD applications which forms the majority of web apps that are developed across the globe.
-
-React.js is an open-source **JavaScript** **library** that was developed by Facebook for creating User Interface that could handle change in the underlying data over-time. It is essentially the View layer in MVC architecture(explained in detail later). Unlike Angular js, completely functional web applications cannot be built on react alone. It requires a combination of libraries including react in order to build complete web apps.
-
-In recent times, a large number of web developers preferring to build their applications in react.js. The developers who still prefer angular js have great hopes for the upgraded version of angularjs which is angularjs 2. The beta version of this framework has already gathered some good reviews. A complete analysis of both angular and react would help developers to decide which one to choose for building their web apps.
-
-Let's analyze some of the important features of angular js and react.
-
-## Angular.js
-
-It is an open-source web development framework originally developed in 2009 and is now maintained by Google and a community of individuals and corporations. Angular js as defined by the official site is nothing but a structural framework for dynamic web apps. The main aim of angular.js was to simplify the development and testing of single page applications in the client side MVC (Model View Controller) architecture. Applications written in angular.js are cross browser compliant and Angular automatically handles the code suitable for each browser.
-
-Some of the most prominent features of angular js are:
-
-* **2-way data binding**: It is the system by which the changes made in the model gets automatically updated in the UI and vice versa
-* **MVC(MODEL VIEW CONTROLLER):** AngularJS incorporates the basic principles behind the original MVC software design pattern into how it builds client-side web applications where
-
-Model – Model represents an object carrying data.
-
-View – View represents the visualization of the data that model contains.
-
-Controller – Controller acts on both model and view. It controls the data flow into model object and updates the view whenever data changes. It keeps view and model separate.
-
-* **Dependency Injection:** Dependency Injection (DI) is a feature that lets you request and obtain the dependencies rather than the tedious process of looking for them.
-* **Directives**: Directives are used to make custom widgets by creating custom HTML tags which in turn act as widgets
-
-## React.js
-
-React is a JavaScript library that is used for building User Interfaces. It was initially developed by Facebook for creating the user interface of Facebook and Instagram. After being used in-house by the Facebook developers it was open-sourced in May 2013.
-
-As mentioned on the Facebook GitHub page, react was built to solve one problem: **building large applications with data that changes over time**. It gives a template language and some function hooks to essentially render HTML. The unique property of react is its ability to update only the changed part when there is a change in the underlying data. This property makes it tremendously faster.
-
-Some of the Key advantages of React.js are:
-
-* **Efficiency:** DOM operations are that needs to be done frequently is an expensive and time consuming process that reduces the efficiency of many of the existing JavaScript frameworks. React overcomes this obstacle in a unique way. It creates a virtual DOM. Thus all the changes that are to be made are considered way ahead of actually performing the changes. This change provides a drastic increase in the efficiency of DOM handling
-* **SEO:** Search engine optimization is one of the biggest challenges in most of JavaScript frameworks. This is yet another milestone achievement of react as it is very SEO friendly.
-* **Simple to Learn:** Learning and adopting the new system of react becomes a cakewalk due to the simple and straightforward APIs that eliminate the need to learn complex concepts to implement a solution.
-
-Now that we have observed each of the competitors separately let's get down to the business of comparison
-
-## Angular vs React: Let the games Begin
-
-![Angular-react-faceoff][1]
-
-The comparison of Angular.js and React.js as competitors is a flawed exercise as both of them are completely different from each other.
-
-* Angular.js is a **complete framework** that incorporates the complete MVC (Model View Controller) structure into the applications
-* React.js is only a java **script library** that is used to build user interface. Essentially it is only the V in the MVC structure.
-
-The fundamental conflict arises from the fact that a completely functional application can be developed using Angular.js but it is not possible to the same using React.js alone. React.js would need the additional external support to build a completely functional web application.
-
-Comparing a complete framework to a java script library would be like comparing apples to oranges. In order to make this a more fruitful endeavor lets make a small amendment. Let us compare angular.js and a complete set of libraries including react which would make the two competitors fall under the same category.
-
-### Mom Vs Wife: the million dollar question
-
-For a beginner starting out in the world of web apps, angular js acts as a caring mother making most of the difficult decisions for us. The highly opinionated angular js 2 makes kick starting a project so easy in angular js. Whereas React.js behaves like a bickering wife who constantly quizzes you with a zillion choices and the decision making process becomes tedious thus leading to more difficulty in starting up.
-
-There is a flip side to the same story as well. In case of complex applications the opinionated nature of angular js leads to loss of much needed flexibility whereas react wins hands down in this case by providing much more flexibility
-
-### Relationship & Friends with benefits
-
-The year 2015 saw the rise of react.js as one of the most powerful java script libraries. Though react is still quite stable, the plethora of libraries on which react was dependent seems to be dwindling away. Thus deciding to build your app on react.js is like making friends with benefits agreement, there is no guaranteed future
-
-On the other hand the angularjs2 is a next step evolution of a stable and well established framework and thus the dependency on external aid is minimal. The applications that you build on angular 2 will be like a long term relationship: with a higher life expectancy
-
-### The Hypocrite:
-
-One of the major advantages of React is that it fails fast and states the obvious. Any small errors such as typos can be immediately identified as a compilation error whereas Angular js 2 will compile the typo like a true hypocrite and fail during run time. As trivial as this may seem this hypocrisy delays the development process.
-
-### First Love: JSX
-
-The choice to go with JSX is one of the major advantages for react. The support provided by code completion is a priceless asset when finishing up the coding part. Whereas the angular 2 still comes with the string-based templates and thus has its own set of disadvantages: limited code completion support and run-time failures
-
-### A bad workman blames his tools:
-
-Though JSX is a very good choice for react, tools support for the latest tools such as IDE's and linters will not be available from day1. Whereas the angular js does not require any tool support as it stores markup in a string or a separate HTML file
-
-### Size zero:
-
-Just like a bunch of frivolous teenage beauties, the developer community too is worried about the perfect size. The size of the raw frame work and library are as follows
-
-Angular js2 (beta version): 566k
-
-React: 139 k
-
-Though size does not make a very huge impact on the performance of the application, the use of frame-work makes the applications carry unnecessary baggage in terms of all the unused functionalities that come as a package with the framework.
-
-### And the Winner is:
-
-The clash of titans in the world of web development is an epic battle that has been raging for a long time. The battle is about to get even more ferocious with the launch of angular2 full version which is expected to happen in mid 2016. At the end of the there is no clear winner. The choice between angular2 and react solely depends upon the nature of the application that is to be built.
-
-We hope the comparison here helps you make a smarter decision on which one to use. Post your comments and queries in the comments section below and we will be glad to address them. Stay tuned for more amazing info from the world of web development.
-
-
-**Looking for [React JS development company ?][2]**
-
-[1]: ./images/vs.png
-[2]: /react-js-development/
\ No newline at end of file
diff --git a/posts/angular-vs-react/images/vs.png b/posts/angular-vs-react/images/vs.png
deleted file mode 100644
index 5e17648..0000000
Binary files a/posts/angular-vs-react/images/vs.png and /dev/null differ
diff --git a/posts/application-development-basic-methodology/2016-10-03-Going-About-Application-Development:-Basic-Methodology.md b/posts/application-development-basic-methodology/2016-10-03-Going-About-Application-Development:-Basic-Methodology.md
deleted file mode 100644
index f79d657..0000000
--- a/posts/application-development-basic-methodology/2016-10-03-Going-About-Application-Development:-Basic-Methodology.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Going About Application Development: Basic Methodology'
-date: 2016-11-03
-featuredpost: false
-description: >-
- Creating or outsourcing your application development can be a mind boggling. Check out our 5 step methodology for application development.
-keywords:
-- application development,
-- web development
-author: Anand Narayan
-link: /application-development-basic-methodology
-category:
-- Tutorial
----
-
-Idea, designs, business model, investor meetings, user acquisition, sales, product development…. – starting a web/mobile application business can be daunting. And if you’re getting into this for the first time, the amount of information and the work involved can be mind boggling.
-
-Here’s the good part – we can take one thing off your plate – the application development part! Over the years, we’ve worked on a bunch of products, spoken to a lot of founders and even worked on our own products. Doing this over and again for about 5 years, we have perfected how one should go about creating applications that your users will LOVE.
-
-This is a quick article that’ll familiarize you with all the steps that go into creating an application successfully. Feel free to drop in your thoughts at the end!
-
-
-
-__Market Research:__ Market research is studying current trends, opinion research and data interpretation from surveys. This involves estimating current trends and studying about your potential audience. Cannot forget competition analysis – you won’t enter a battlefield without knowing who you’re up against, will you?
-
-
-
-__Wireframe:__ It is a page schematic or blueprint of the app. It’s generally a low-fidelity mockup of app screens with placeholders for content, images and buttons. Creating user stories along with, makes the development process a lot easier. Clarity between what the client is expecting and what the agency is building is ensured.
-
-
-
-__Revenue model:__ If you’re hiring an agency for development, chances are you’re looking to make money out of it. Deciding on how your application will make money in the initial stages makes development easier and pain free. In-app purchases, ads or making the application paid are general revenue sources. What would you prefer?
-
-
-
-__Design prototype:__ Design prototype is how your application is going to look once it’s ready. The wireframes, color palette and the content placement is all brought together in this step. The prototype is high-fidelity, meaning it’ll resemble very closely to the shipped application. Iterate multiple times, till you’re satisfied – but know when to take a call and start development. A shipped product is better than an unfinished ‘perfect’ product.
-
-
-
-__Development:__ This is where the active work begins on app development. The architecture of the application is created, if required, and developers begin churning out beautiful code. Front end guys begin transforming the designs into amazing pages or screens. The whole is put together, tested with every possible edge case, demoed to the client and shipped! The product is now in your hand to be used.
-
-
-
-
-That’s our 5 stage process to make your app development strategy easier – simple and gets the job done! We have more than 40 clients who agree with us. 🙂
-
-If you’re thinking of entering the mobile application market – [drop us a line](/contact). We love building great products!
diff --git a/posts/application-development-basic-methodology/images/AppDevInfo-3.png b/posts/application-development-basic-methodology/images/AppDevInfo-3.png
deleted file mode 100644
index 2f8215a..0000000
Binary files a/posts/application-development-basic-methodology/images/AppDevInfo-3.png and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/2016-11-11-10-Everyday-Apps-Made-Using-ReactJS.md b/posts/apps-made-using-reactjs/2016-11-11-10-Everyday-Apps-Made-Using-ReactJS.md
deleted file mode 100644
index 62984a6..0000000
--- a/posts/apps-made-using-reactjs/2016-11-11-10-Everyday-Apps-Made-Using-ReactJS.md
+++ /dev/null
@@ -1,112 +0,0 @@
----
-templateKey: 'blog-post'
-title: '10 Everyday Apps Made Using ReactJS'
-date: 2016-11-11
-featuredpost: false
-category:
-- General
-description: >-
- React is an open-source JavaScript library and is being maintained by Facebook developers. A lot of big names have adopted it. We tell you 10 such apps.
-keywords:
-- reactjs
-- apps made with react
-- reactjs apps
-- 10 apps on reactjs
-- apps built with reactjs
-author: Anand Narayan
-link: /apps-made-using-reactjs
-tags:
-- React
-- ReactJS
----
-
-ReactJS is an open-source JavaScript library and is being maintained by Facebook developers, and it has gained exponential popularity over the 3 years since of it’s release.
-
-React is a component oriented abstraction and it solves the view portion of front end web development and could also be used in other mobile and web domains. With it amazing features including One way data flow, Virtual DOM and allowing Javascript Extensions (JSX).
-
-However, it is only restricted to ‘view’ , server side rendering and easily readable code are a big plus. Taking advantage of all the things React has to offer on the front, it is widely used by many popular sites.
-
-Reasons why React can or should be used cannot be summed up in one go. But the platforms using React might give you some idea how effective it could be.
-
-
-Here is the list:
-
-
-## 1. Dropbox
-
-
-Dropbox is a Web-based file hosting service operated by Dropbox, Inc. that uses cloud computing to enable users to store and share files and folders with others across the Internet using file synchronization. It was founded in 2007 by Drew Houston and Arash Ferdowsi as a Y Combinator startup
-
-
-
-## 2. Instagram
-
-
-
-Instagram is an online mobile photo-sharing, video-sharing, and social networking service that enables its users to take pictures and videos and share them on social media sites. Just like Twitter you can use hashtags. It is well known that Instagram crossed Twitter in terms of active users in 2014.
-
-
-## 3. Netflix
-
-
-
-Netflix is an on-demand online video streaming service with 44 million subscribers worldwide.
-
-
-
-## 4. Pinterest
-
-
-
-Pinterest users can upload, save, sort, and manage images and videos -known as pins, through collections known as pinboards. Pinterest acts as a personalized media platform where users can browse the content of others in their feed.
-
-
-## 5. Reddit
-
-
-
-Reddit is a user generated content social networking site, where users can submit a link or post anything like question , and participate in community via threads.
-
-
-## 6. Imgur
-
-
-
-Imgur is an online image hosting and sharing platform known for viral, most popular memes and gifs.
-
-
-## 7. Whatsapp (web version)
-
-
-
-Whatsapp is a messaging service to connect with family and friends and can also be used for sharing media content. Web version syncs with the mobile device and hence, can only be accessed if the if the user is logged in and connected online.
-
-
-## 8. Asana
-
-
-
-Asana is a web and mobile application designed for teams to track their work. Tasks, projects and conversations are can be easily managed allowing teams to be more productive.
-
-
-
-## 9. Flipboard
-
-
-
-Flipboard is the one stop online social magazine, where content from social networks, publishers, online sources and photo sharing sites could all be accessed in one place.
-
-
-## 10. Paypal
-
-
-
-PayPal is a worldwide online payments system which allows money transfer and is an electronic alternatives to traditional paper methods.
-
-
-
-The above are some of the most popular websites that use on React JS. It can only be attributed to ease of use, speed and platform compatibility among other things.
-
-Let us know about your favourite website that runs on React in the comments section below!
-
-[Oh, and if you’re looking for a React JS development team, contact us here.](/contact)
diff --git a/posts/apps-made-using-reactjs/images/Asana.jpg b/posts/apps-made-using-reactjs/images/Asana.jpg
deleted file mode 100644
index d4ce8ff..0000000
Binary files a/posts/apps-made-using-reactjs/images/Asana.jpg and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/Dropbox.jpg b/posts/apps-made-using-reactjs/images/Dropbox.jpg
deleted file mode 100644
index 93e37b1..0000000
Binary files a/posts/apps-made-using-reactjs/images/Dropbox.jpg and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/Flipboard.jpg b/posts/apps-made-using-reactjs/images/Flipboard.jpg
deleted file mode 100644
index d4009a5..0000000
Binary files a/posts/apps-made-using-reactjs/images/Flipboard.jpg and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/Pinterest.jpg b/posts/apps-made-using-reactjs/images/Pinterest.jpg
deleted file mode 100644
index 5fbf910..0000000
Binary files a/posts/apps-made-using-reactjs/images/Pinterest.jpg and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/insta.jpg b/posts/apps-made-using-reactjs/images/insta.jpg
deleted file mode 100644
index 70ac970..0000000
Binary files a/posts/apps-made-using-reactjs/images/insta.jpg and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/logo-1200-630.jpg b/posts/apps-made-using-reactjs/images/logo-1200-630.jpg
deleted file mode 100644
index 78500d2..0000000
Binary files a/posts/apps-made-using-reactjs/images/logo-1200-630.jpg and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/netflix-logo.png b/posts/apps-made-using-reactjs/images/netflix-logo.png
deleted file mode 100644
index 0f2f19f..0000000
Binary files a/posts/apps-made-using-reactjs/images/netflix-logo.png and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/paypal.png b/posts/apps-made-using-reactjs/images/paypal.png
deleted file mode 100644
index 29dfa0e..0000000
Binary files a/posts/apps-made-using-reactjs/images/paypal.png and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/reddit.jpg b/posts/apps-made-using-reactjs/images/reddit.jpg
deleted file mode 100644
index 5f6b011..0000000
Binary files a/posts/apps-made-using-reactjs/images/reddit.jpg and /dev/null differ
diff --git a/posts/apps-made-using-reactjs/images/whatsappweb.jpg b/posts/apps-made-using-reactjs/images/whatsappweb.jpg
deleted file mode 100644
index 3dbfb8d..0000000
Binary files a/posts/apps-made-using-reactjs/images/whatsappweb.jpg and /dev/null differ
diff --git a/posts/automation-testing-framework-development-tips-for-web-apps/automation-testing-framework-development-tips-for-web-apps.md b/posts/automation-testing-framework-development-tips-for-web-apps/automation-testing-framework-development-tips-for-web-apps.md
deleted file mode 100644
index 4455317..0000000
--- a/posts/automation-testing-framework-development-tips-for-web-apps/automation-testing-framework-development-tips-for-web-apps.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Automation Testing Framework Development Tips For Web Apps'
-date: 2015-12-28
-featuredpost: false
-description: >-
- Here are some of the tips on automation testing framework development. We help startups with offshore web application development.
-keywords:
-- automation testing framework
-- automation testing
-- offshore web development
-- offshore mobile app development
-- application development company
-author: Hemanth
-link: /automation-testing-framework-development-tips-for-web-apps
-category:
-- Development
-tags:
-- automation testing
-- web application development
----
-
-While every automation tester is familiar with Selenium RC, Selenium IDE and Selenium WebDriver, when it comes to automation framework development a whole new methodology swoops in. How to implement a POM(Page Object Model)? Which unit testing framework to use? Is framework development dependent on every language? Which reporting tool should be included in the framework? Which type of framework needs to be used for different types of applications? etc., are some of the questions that arises when developing a framework. I will continue writing this blog using Java as my language.
-
-![Seleniumlogo][1]
-**Page Object Model**
-
-Firstly, when considering developing a framework we need to first keep into consideration, how to implement Page Object Model. It is a design pattern to create Object Repository for web UI elements(nothing but Page Objects). This design pattern is so popular that it is kind of like a necessity and what someone would hope for in every framework.
-
-There are several ways you can implement Page Object Model.
-
-One simple and classical way is to put all your xpaths or IDs etc. as a key-value pair in a Property File and Read the value using the key inside the Selenium methods.
-
-For Eg: Inside Sample.properties
-
-
-```java
- google_Xpath=selenium
-
- public class SearchData {
-
- public static String propertiesReader(String Filename, String key) throws IOException{
- FileReader reader = new FileReader(Filename);
- Properties properties = new Properties();
- properties.load(reader);
- String s = properties.getProperty(key);
- return s;
- }
- }
-
- driver.findElement(By.xpath(SearchData.propertiesReader("path of the Sample.properties file","google_Xpath"));
-```
-For every class, we need to create a property file.
-
-The other way is to use PageFactory class provided by Selenium.Using the constructor, we can initialize the PageObjects of the particular class using the static method initElements of the PageFactory class. Here is what I mean.
-
-
-```java
-Class Sample{
- public Sample(WebDriver driver){
- PageFactory.initElements(driver, this);
- }
-
- @FindBy(xpath="//div[@id='products_page']/ul/li[1]")
- private WebElement firstProduct;
- public void clickProduct(){
- firstProduct.click();
- }
-}
-```
-
-
-While creating the object of the class pass the driver inside the constructor.
-
-```java
-Sample s = new Sample(driver);
-```
-The above line will initialize my Page Objects.
-
-The use of PageFactory would be ofcourse, primarily to implement Page Object Model. But, also there is another advantage that we can notice here. It would be to eliminate the way we conventionally locate Web Elements. Instead of providing driver.findElement(By.xpath("xpath here")), we can instead easily provide an annotation called @FindBy(xpath="xpath here").
-
-**Choosing a Unit Testing Framework**
-
-Secondly, we find ourselves in ambiguity when we are writing a framework about which unit testing framework to use. Ofcourse, most popular and two most common unit testing frameworks are Junit and TestNG.
-
-Most of them would agree including me that by far TestNG is the best unit testing framework in particular writing automation test scripts since it has so many advantages like having its own reporting tool, providing us the capability to implement data-driven testing, having a lot annotations, parallel execution, grouping and so on, over Junit or any other unit testing framework. But that is not the case.
-
-It depends on what type of framework you are going for. In most cases, yes agreed TestNG is the best option. But assume that we are developing a framework using Cucumber and language being Java. Again, yes we can implement Cucumber-TestNG but I would bluntly say it doesn't matter since Cucumber annotations and its features take over. The optimal way to go about is to implement Cucumber-Junit since Cucumber and Junit are tightly coupled.
-
-**Is Automation Testing Framework Development language dependent**
-
-Coming to the next important topic, would be naive in paper but it is a pretty good question. Let me just dive into to the answer. The framework development is NOT dependent on the language, but having said that the way we implement the framework might differ. Here is what I mean, Page Object Model can be achieved using the PageFactory class in Java but WebDriver for Python API doesn't include PageFactory. Having said this it doesn't mean that we cannot implement POM. Here is a [link][2] to implement the same.
-
-
-![night-computer-hdd-hard-drive \(1\)][3]
-
-**Reporting tool**
-
-Next topic that I would like to discuss is about the Reporting tool integration with the framework. Most of the framework developers would agree when I say that this is quite important because the way we provide reports to stakeholders should be lucid enough for them to clearly understand about the test suite. It would simple define how we present ourselves.
-
-If we are using maven as the build management tool I would highly recommend that the reporting tool to be Allure. It is an elegant reporting tool which provides a lot of clarity about the test suite. The best part is that they have provided their adapters for popular languages like Java, PHP, Ruby, Python and C# test frameworks.
-
-
-If we are using Cucumber, this is the best reporting tool. It provides a separate section for feature files. Right now, I can easily say that Allure is the best reporting tool available. If we are not using Cucumber, then the best reporting tool would be Extent reports by Anshoo Arora. Provides coherence for the testing coverage pretty well. Also one advantage of this reporting tool is that it is independent of the build management tool.
-
-Of course, there are other good reporting tools but in my opinion these two are the best available today.
-
-**Choosing the type of Framework**
-
-Last and the most important question that arises during discussion is to choose the type of framework. This can be achieved based on the size and complexity involved in the project. What I am trying to say is that if your project is a pretty small one, then blindly go for a hybrid framework with Behaviour Driven Development approach being the high priority. One way to implement BDD is to use Cucumber. Since it is a small application, feature files that are involved while writing the suite would be obviously less.
-
-Now a question might arise saying why it is not optimal to follow BDD approach for large complex applications. The answer is simple. If our project is big and complex, feature files and the corresponding methods written for every When,And,Then, etc. will simply increase. Maintaining these methods will be extremely difficult.
-
-If a large complex application involves testing using a lot of test data, then blindly for a hybrid framework with data-driven approach being the high priority. One classical way to implement this is to simply read data from a property file. Another way to implement a data-driven approach and according to me a much better way considering the maintenance of the test data would be read the data from an excel file.
-Using Apache POI or JXL we can write custom libraries to read rows and columns from an excelsheet. By the way, Apache POI has the ability to read data from excel files having .xls and .xlsx extensions whereas JXL has the ability to read data from excel files having .xls extension.
-
-The last thing I would like to say before I end this blog is that the agenda of developing a framework is to make life simple for us. It is a way to organize your code so that whoever views or works on the code should be able understand pretty well. Hence anyone who is thinking about developing an automation framework should primarily consider about the way he is going to organize his data. In simple words, he should think about how to make it easy to write automation scripts for himself and the people working with him.
-
-[1]: ./images/seleniumlogo.png
-[2]: https://code.google.com/p/selenium/source/browse/py/test/selenium/webdriver/common/google_one_box.py
-[3]: ./images/night-computer-hdd-hard-drive-1-1024x681.jpg
-
-
\ No newline at end of file
diff --git a/posts/automation-testing-framework-development-tips-for-web-apps/images/night-computer-hdd-hard-drive-1-1024x681.jpg b/posts/automation-testing-framework-development-tips-for-web-apps/images/night-computer-hdd-hard-drive-1-1024x681.jpg
deleted file mode 100644
index 68e386d..0000000
Binary files a/posts/automation-testing-framework-development-tips-for-web-apps/images/night-computer-hdd-hard-drive-1-1024x681.jpg and /dev/null differ
diff --git a/posts/automation-testing-framework-development-tips-for-web-apps/images/seleniumlogo.png b/posts/automation-testing-framework-development-tips-for-web-apps/images/seleniumlogo.png
deleted file mode 100644
index 341d8c2..0000000
Binary files a/posts/automation-testing-framework-development-tips-for-web-apps/images/seleniumlogo.png and /dev/null differ
diff --git a/posts/bangalore-the-globes-startup-hub/bangalore-the-globes-startup-hub.md b/posts/bangalore-the-globes-startup-hub/bangalore-the-globes-startup-hub.md
deleted file mode 100644
index a81ed1d..0000000
--- a/posts/bangalore-the-globes-startup-hub/bangalore-the-globes-startup-hub.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Bangalore – The Globe’s startup hub'
-date: 2014-01-04
-featuredpost: false
-category:
-- General
-description: >-
- Anand, Codebrahma CEO's view on silicon valley of India, Bangalore. Explaining how Bangalore is catering various startups with technology needs.
-author: Anand Narayan
-link: /bangalore-the-globes-startup-hub
-tags:
-- Development in Bangalore
-- Startup hub
----
-
-Are you a start up in search of solution for your technology needs. Are you a Local Business trying to start or grow your company's online presence and engagement in your locality ? Read Further.
-
-* * *
-
-Technology & Internet have changed the face of how we do Business today and it has added a myriad of ways to solve existing problems and grow existing Businesses. Internet, with the advent of smart phones have changed how Businesses reach consumers and it has almost become a de facto necessity for Businesses to embrace this change and leverage it..
-
-To this date, this trend has been increasing positively and more and more people are venturing into start-ups to solve everyday problems. Local Businesses are actively investing in the web to increase their Brand Value, Community engagement and Revenue. Garage/Bootstrapped/Ventured start ups are rapidly growing in number and are addressing numerous everyday problems that their target consumers face.
-
-On one hand, Local Business,across the globe, are looking for the right technology know-hows/ tools for growing their business and to implement them in a cost-effective way. Start-ups, working in time strapped and rapidly changing business environments, find themselves not able to spend time on the development of their Technology Product. **_Developing Quality Software that caters perfectly to the problem_** is a Time & Effort consuming task. Also Startups and Local Business are bound by the amount of money they could spend on Technology and thus extending their ROI Period on online sales and marketing even further.
-
-> "If you are facing any of the above difficulties, Then Bangalore is the place for you. Look No Further"
-
-## Why you should consider Bangalore for your technology needs
-
-Bangalore saliently addresses the above discussed issues.
-
-### Growing Trust:
-
-Trust, like any other human emotion isn't built in a day. Currently the trust is increasing for bangalore based Tech companies due to their novel processes and approaches which are uninfluenced by the business practices of the pre-Internet Era.
-
-### A growing ecosystem.
-
-There is a growing ecosystem of local and global indian start ups that are sprouting in bangalore. The reasons to these are good climate(off late its getting extreme) Well connected to other cities and tourist destinations and there is a network of talented people whose reach is literally everywhere
-
-### Talent @ reasonable costs.
-
-Bangalore boasts of a huge pool of Software programmers who are billed at reasonable costs and that means you could do more with your existing start up budget.
-
-### The Knowledge Powerhouse
-
-Bangalore has been dubbed "India's Silicon Valley" and is home of IT giants such as Google, EMC, Yahoo Inc. , Amazon, SAP, GE and much more. As a result, a consistent volume of organic knowledge Transfer is happening on the know-hows and best practices of Technology & Software Development to the WorkForce Community.
-
-### Keep your startup awake for a little more hours everyday.
-
-Take advantage that the city is in a different timezone. Take care of your Tech stuff outside your work hours so you can take care of your business during your work hours.
-
-If you come to Bangalore, you will know that there is a brimming community of technology adopters/enthusiasts who actively engage on and adopt new beta products. Make use of this smartly to validate your idea.
-
-These are few of the reasons why we think Bangalore is the Globe's Startup Habitat
-
-Now its your turn to tell us what you think? Leave your comments below.
-
-* * *
-
-If you are looking for Node.js development company, [AngularJS Development company][2] then contact us today! We are here to help!
-
-[2]: /angularjs-development-company
-
-
\ No newline at end of file
diff --git "a/posts/beginners-guide-app-store-optimization/2016-11-19-Beginner\342\200\231s-Guid-to-App-Store-Optimization.md" "b/posts/beginners-guide-app-store-optimization/2016-11-19-Beginner\342\200\231s-Guid-to-App-Store-Optimization.md"
deleted file mode 100644
index 57b8011..0000000
--- "a/posts/beginners-guide-app-store-optimization/2016-11-19-Beginner\342\200\231s-Guid-to-App-Store-Optimization.md"
+++ /dev/null
@@ -1,119 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Beginner’s Guide to App Store Optimization'
-date: 2016-11-16
-featuredpost: false
-description: >-
- Marketing your mobile application can be a challenging task. Implementing some basic ASO checks can do wonders! Read on to know how.
-keywords:
-- ASO
-- app store optimization
-- mobile app marketing
-author: Anand Narayan
-link: /beginners-guide-app-store-optimization
-category:
-- Tutorial
-tags:
-- ASO
-- Growth
-- Startup
----
-
-
-
-
-More than 2 million apps each on iOS, Android stores and thousands being added every day while a majority of the apps still remain unexplored. It was reported that nearly [60% of the apps on the App Store have __never__ been downloaded](http://appdiggity.com/60-of-app-store-apps-have-never-been-downloaded/) and the numbers have only been increasing ever since. Reason being – only ‘top and popular apps’ are being downloaded over and over, while there is little knowledge about others.
-
-All this directs to less or no visibility of such apps and are thus, never picked up by the algorithm to show in search results. Visibility is associated to title of the app, description among other factors. For higher ranking, all of these need to be optimized accordingly and must comply to the guidelines of respective app store to get high ranking, the process known as App Store Optimisation.
-
-
-## App Store Optimisation
-App Store Optimization (ASO) is basically optimizing your app page in order to get better visibility when some one searches with keywords on the app store. ASO involves optimising titles, app descriptions, keywords and other important factors that are considered by the search algorithm that improve visibility.
-
-ASO is to app store what SEO is to search engines which will result in higher search ranking and eventually lead to one thing – download of the app.
-
-## Why is ASO necessary?
-ASO is necessary for the reason that you want your app to be successful. Releasing an app on the store and just waiting for it take off is a thoughtless idea. Regardless of how great the quality of an app is, without optimisation – it will be lost in the lot and will likely to be never found by users.
-
-There are a lot of ways users discover an app – friends, online ads, blog articles etc, but searching on the app store remains the most likely way someone will find your app. A staggering 47% of iPhone users in the US admit that they found their last installed app by searching the app store.
-
-
-
-Highest portion of app discovery happens through keyword search and higher ranking directly impacts on the number of downloads.
-
-
-## Discovery in search bar
-An average user who browses on app store, the search bar is mostly used in two ways. In first case, you are looking for a particular app that you know of, and search by app name. In other cases, you don’t know what you’re looking for, i.e unaware of app(s) because they are not popular or you’ve never used before. In such situation one might go with ‘general phrases’ like puzzle games for kids or multiplayer race games and look for results.
-
-
-The algorithm captures these phrases and looks for direct results and moves on to apps that have similar keywords in app descriptions. Thus, optimising these factors can boost visibility, leading to a higher number of views on the app and increased downloads.
-
-
-## App Store Optimising Factors
-ASO isn’t is a single metric that can be worked overnight. It comprises of several elements including title, description, reviews etc. Depending on the importance, we’ve classified the factors into primary and secondary. You need to make sure that your primary factors are in place before you can expect any boost in the rankings.
-
-### Primary Factors
-#### Title
-The title is the biggest contributing factor for search ranking. When a ‘keyword’ is searched for, apps with the keyword in the title are given utmost importance and picked up first by the app stores.
-
-
-
-For instance – let’s take Amazon, Skype and Whatsapp. These are giants in shopping, video-call and messaging categories respectively. It’s also important to note that Skype and Amazon have 500 million downloads and Whatsapp crossing over 1 Billion. Now, let’s have a look at their app pages
-
-
-
-Take a look at the app titles. They are not just __Amazon, Skype and Whatsapp but are ‘ Amazon shopping’ ‘ Skype – free IM & video calls’__ and __‘Whatsapp messenger’__. These titles not only show the app names but also mention their functionality – what they are meant for, and has an advantage over any other app in the category.
-
-
-__Description__
-Description is next crucial thing after app title. The algorithm searches the app description for relevant keywords and ranks accordingly after matching phrases. For instance – if you search for ‘ puzzle games for kids’ the results are as follows:
-
-
-
-__Animals Puzzle for Kids__ – This Free jigsaw like puzzle game helps your kids develop matching, tactile and fine motor skills while playing 100 different Animals Puzzles – horse, cow, pig, sheep, duck, chicken, donkey, dog, cat and rabbit, bee, butterfly, mouse, peacock, monkey, owl, fish, dolphin, penguin, frog.
-
-__Kids Animals Jigsaw Puzzles__– If your preschool kids like jigsaw puzzles, they will LOVE Super Puzzle! Super Puzzle works almost like real jigsaw puzzles for kids. Once you pick a piece it stays on the board even if you place it incorrectly, and you can nudge pieces around until it snaps to the right slot.
-
-In addition to title, the app descriptions have very relevant keywords and hence, have great of visibility and top ranking.
-
-
-## Secondary Factors
-Secondary factors may be aren’t that crucial as the above but, cannot be completely ignored either. These factors add value to primary factors in getting a good rank.
-
-### Downloads
-Higher number of downloads indicate that more number of people have used and that means it will be shown more frequently in ‘similar apps’ and ‘users also installed’ section. With increasing downloads, the app also gets increasing exposure.
-
-### Reviews
-Reviews reflect the quality of the app. All applications have an average rating on a given scale of 1 – 5 that is given by users. 5 star rating of an app indicates best quality, good user experience and everything that makes the app more likeable to download.
-
-### Localisation
-While uploading apps on the store, uploader has an option to make to available for all, or specific regions. Although an app can be searched with title and keywords globally, having a regional/country preference will give a higher ranking whenever search request comes from that geographical boundary.
-
-### Asset Optimizing
-Screenshots and promo video (if any) placed right in the app page helps users know how the app is going to look like Decoding the functionality based on user interface, users will quickly be able to judge whether your app solves their purpose or not.
-
-## How is Android ASO different from iOS ASO?
-Although app store optimization is the process of increasing discoverability of apps, there are different guidelines to comply with, for different app stores. While, most of the factors are generalised and applicable in most cases, there are some guidelines that are different in ios and android.
-
-### iOS App store guidelines
-The most important factor that defies with normal app store optimisation rules is that, in iOS the content description doesn’t contribute to search ranking at all. However, the uploader specifies a list of keywords that relevant to the app which is taken into consideration by algorithm. The app is only searchable by app name, company name, and keywords which are given by developer during metadata setup.
-
-_Some other guidelines include:_
-
-100 word limit description and 50 word limit for app name
-Special characters and keyword repetition are not recommended and aren’t considered by search algorithm
-Every app should be mandatorily assigned one primary category, and also under optional subcategories. If the app is directed to kids under 11, it must be checked for ‘Made for Kids’.
-iOS app description has no effect in the search ranking.
-
-
-### Android Play Store Guidelines
-Android, just like Google relies more on the semantics to improve search accuracy by understanding searcher intent and the contextual meaning of terms as they appear in the searchable dataspace. So the title, description, reviews, categories -everything is taken into account by Android for the results.
-
-
-_Some other guidelines include:_
-
-Android allows for long descriptions. Users can find application features by clicking on ‘Read More’, whereas just a single line description is shown on the app pages.
-Google collects data about installs, uninstalls, install retention and app engagement. Apps that are doing well in these metrics are ranked higher.
-Apps that have good number of ‘+1’ in Google plus or are shared in any kind of social media get a general rank boost
-
-App store optimization is important, and can give the boost your app needs to get hugely popular. Have you tried using these tactics for your app? How has your experience been? We’d love to hear your thoughts in the comments section below.
diff --git a/posts/beginners-guide-app-store-optimization/images/ASO-01.png b/posts/beginners-guide-app-store-optimization/images/ASO-01.png
deleted file mode 100644
index 8745af9..0000000
Binary files a/posts/beginners-guide-app-store-optimization/images/ASO-01.png and /dev/null differ
diff --git a/posts/beginners-guide-app-store-optimization/images/KeywordsInTitle.png b/posts/beginners-guide-app-store-optimization/images/KeywordsInTitle.png
deleted file mode 100644
index 2868e36..0000000
Binary files a/posts/beginners-guide-app-store-optimization/images/KeywordsInTitle.png and /dev/null differ
diff --git a/posts/beginners-guide-app-store-optimization/images/Screen-Shot-2015-08-27-at-9.26.12-AM.png b/posts/beginners-guide-app-store-optimization/images/Screen-Shot-2015-08-27-at-9.26.12-AM.png
deleted file mode 100644
index b3d73c0..0000000
Binary files a/posts/beginners-guide-app-store-optimization/images/Screen-Shot-2015-08-27-at-9.26.12-AM.png and /dev/null differ
diff --git a/posts/beginners-guide-app-store-optimization/images/Untitled-design-1.png b/posts/beginners-guide-app-store-optimization/images/Untitled-design-1.png
deleted file mode 100644
index 2178deb..0000000
Binary files a/posts/beginners-guide-app-store-optimization/images/Untitled-design-1.png and /dev/null differ
diff --git a/posts/beginners-guide-app-store-optimization/images/fullshot-1.png b/posts/beginners-guide-app-store-optimization/images/fullshot-1.png
deleted file mode 100644
index bb75494..0000000
Binary files a/posts/beginners-guide-app-store-optimization/images/fullshot-1.png and /dev/null differ
diff --git a/posts/best-gems-for-ruby-on-rails-web-applications/best-gems-for-ruby-on-rails-web-applications.md b/posts/best-gems-for-ruby-on-rails-web-applications/best-gems-for-ruby-on-rails-web-applications.md
deleted file mode 100644
index 5d374e3..0000000
--- a/posts/best-gems-for-ruby-on-rails-web-applications/best-gems-for-ruby-on-rails-web-applications.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'THE 15 BEST GEMS FOR RUBY ON RAILS WEB APPLICATIONS'
-date: 2016-02-03
-featuredpost: false
-description: >-
- Here is the list of best ruby gems which ruby on rails developers must know. These ruby gems help us build awesome rails applications within short period.
-keywords:
-- ruby on rails development
-- ruby on rails companies
-- rails development companies,
-author: Raviraj Hegde
-link: /best-gems-for-ruby-on-rails-web-applications
-category:
-- Research and Articles
-tags:
-- Ruby on rails
-- Ruby on rails development
----
-
-Ruby is a breakthrough in allowing web development as one can make use of `Gems` to fill in functionalities. This allows one to build a web app in matter of days which would usually take months to develop. Gems are highly modular and perform a specific function, which makes integrating them into new applications extremely easy. Out of the multitudes of gems created by the Ruby community at large for use, we pick fifteen which, in our opinion, are the recommend ones that should be present in every web application.
-
-1. **Rails**
-
-People often forget that Rails itself is a gem written in Ruby. It is a web application framework that includes all the basic requirements for making database-backed web applications adherent to the Model-View-Controller (MVC) template. It facilitates use of web standard languages like HTML, JavaScript or CSS inside the application environment.
-
-2. **Turbolinks**
-
-Turbolinks speeds up opening links in the application by letting the browser refresh only those parts of the page that change and keeping the already compiled JavaScript and CSS in place. Turbolinks is very light on memory, which makes it perfectly suited for mobile applications and is self-contained, not requiring jQuery or other libraries to function.
-
-3. **Figaro**
-
-Figaro is a simple, Heroku-friendly, Rails app configuration that uses ENV and a single YAML file that is used to securely configure applications written using Rails with great ease. Figaro introduces a convention that keeps the configuration data separate from the actual SCM(like GIT) by parsing the YAML file that is ignored by the SCM and loading its values into ENV.
-
-4. **Sidekiq**
-
-Sidekiq is a full-featured framework for Ruby that offers simple and efficient background processing and is designed to be easy to integrate with any modern Rails application. Sidekiq uses multithreading to handle several jobs in the same process simultaneously. It is fully compatible with Resque.
-
-5. **Pry**
-
-Pry is a powerful runtime developer console for Ruby and is completely developed from the ground up to offer various features that are not offered by the standard IRB shell.
-
-6. **Devise**
-
-Devise is a flexible authentication solution for Rails based on Warden. It comprises 10 modules that might be used as needed without fostering any dependencies in the code and also permits you to have more than one model signed in at the same time. Devise executes in a completely thread-safe manner on YARV. Devise supports authentication through both Forms and HTTP Basic Authentication, supports OmniAuth and has various useful features like sending emails with authentication confirmation instructions or password reset instructions, etc.
-
-7. **Carrier Wave / Paperclip**
-
-Carrier Wave is a classy approach to enabling file uploads for Rails, Sinatra and other Ruby web frameworks. Paperclip enables easy file attachment for ActiveRecord. Both these gems provide access to the file system within the web application environment.
-
-> If you are looking for reputed then check out Codebrahma.
-
-8. **CanCanCan (inspired by CanCan)**
-
-CanCanCan is an authorisation library for Ruby on Rails that allows for walled gardens, that is, restricting access to resources and data for specific users. It is derived from the presently dead CanCan project.
-
-9. **Rspec**
-
-Rspec is a testing framework for behaviour driven development in Ruby 3 and Ruby 4. Rspec allows you to simulate use of your application by testing all variants of user inputs to see if any combinations throw up any errors.
-
-10. **Ahoy**
-
-Ahoy is an analytics platform used to track visits and events in Ruby, JavaScript and other native apps. Technically a Ruby engine and not a gem, Ahoy creates visit tickets containing the source of the traffic, location from where the visit originates, information about the client device, and various other UTM parameters upon every visit to the website. It can track visits as well as events in the application.
-
-11. **Doorkeeper**
-
-Doorkeeper is a provider for introducing OAuth2 (Ruby wrapper for OAuth 2.0 protocol) functionality to web applications using Rails or Grape. It enables more secure user logins and offers greater resistance to unauthorised access.
-
-12. **OmniAuth**
-
-OmniAuth is a library that standardizes multi-provider authentication for web applications utilizing Rack middleware. OmniAuth uses strategies that can be used to specify conditions for authenticating users via disparate systems.
-
-13. **Capistrano**
-
-Capistrano is a framework for enabling remote server automation and deployment. Although written in Ruby, Capistrano is platform agnostic and can be used to deploy projects written in any language, including Java and PHP.
-
-14. **Sass-rails**
-
-Sass-rails adds CSS assets to integrate the Sass stylesheet language(An extension of CSS) with web applications built using Ruby on Rails. Rails versions post 3.1 includes support for Sass right out of the box.
-
-15. **ActiveModelSerializers**
-
-Most widely used library for designing JSON APIs through Rails. It has two chief components: serializers that describe which attributes or relationships to serialize and adapters that describe how the concerned attribute or relationship should be serialized.
diff --git a/posts/brief-intro-smart-contracts-endless-possibilities/2017-05-12-A-BRIEF-INTRO-TO-SMART-CONTRACTS-AND-THEIR-ENDLESS-POSSIBILITIES.md b/posts/brief-intro-smart-contracts-endless-possibilities/2017-05-12-A-BRIEF-INTRO-TO-SMART-CONTRACTS-AND-THEIR-ENDLESS-POSSIBILITIES.md
deleted file mode 100644
index 7b6b85a..0000000
--- a/posts/brief-intro-smart-contracts-endless-possibilities/2017-05-12-A-BRIEF-INTRO-TO-SMART-CONTRACTS-AND-THEIR-ENDLESS-POSSIBILITIES.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'A Brief Intro To Smart Contracts And Their Endless Possibilities'
-date: 2017-05-12
-featuredpost: false
-description: >-
- A look into the mystic world of blockchain and smart contracts. If you're looking to understand what a smart contract is and how can it change the world, read on.
-keywords:
-- smart contracts
-- future of smart contracts
-- blockchain
-link: /brief-intro-smart-contracts-endless-possibilities
-category:
-- Business
-tags:
-- blockchain
-- fintech
-- fintech software
-- smart contracts
-author: Anand Narayan
----
-
-
-## What is a Smart Contract
-A smart contract is a computer program designed to facilitate, verify and enforce an agreement. When implemented, a smart contract can very well replace the need for an attorney or a notary to sign a document which then can be upheld in the court.
-
-These contracts execute themselves when the all the clauses in the contract are met. So, for example, if you draw up a smart contract to lease your apartment with the two conditions being rent paid and the time the key (assuming a digital key) is handed over. As soon as the renting party pays the due amount – the contract ensures the key is transferred to the tenant. The landlord cannot prevent the transfer of the key once the rent is paid – nor is the key transferred before the rent in paid. Because the contract is publicly recorded with the identities kept anonymous – neither the landlord nor the tenants can accuse of any wrong doings. The smart contract acts as a liaison ensuring the contract conditions are always met.
-
-## How Does a Smart Contract Work
-A smart contract works on the principles of blockchain – a distributed, decentralized database used as a ledger system by the Bitcoin. Think of blockchain as a ledger, replicated across thousands of computers, instead of being on one location. The updating of such distributed ledger is done by the system itself, and has rules defined to verify and ensure correctness of the data. As the ledger is public and hosted by a lot of computers all across the world – the entry (transactions) is publicly verified while the identities of the individual participants is anonymous. Replication of the document makes the information contained in it, immutable.
-
-Smart contracts run on the blockchain technology – they are immutable and are enforced by the system itself. And because the contract is publicly verifiable – the chances of conflict are minimized. While smart contracts may appear like a solution to the overburdened justice system – they cannot be solely entrusted. Most of the lawyers working towards making smart contracts publicly available think of the future of jurisdiction as a combination of smart contracts and old school paper contracts.
-
-## Smart Contract Applications
-The concept of smart contracts can be used to run any condition driven operation. Smart contracts take out the confusion and uncertainty from an agreement, because the enforcement is also taken care of by the program. This makes the underlying concept of smart contracts applicable to whole variety of businesses and operations. From healthcare to financial services & [Fintech](/financial-software-development-company), to supply chain management and even governance – any sector that could do better with highly secure, automated actions based on certain conditions can greatly benefit from smart contracts.
-
-### Some of the possible smart contract applications are:
-
-__Supply Chain__ – Logistics companies can use smart contracts to update their suppliers and inventories based on deliveries. Jeff Garzik explained this in a Blockchain conference held in Washington DC last year. “If I receive cash on delivery at this location in a developing, emerging market, then this other _product_, many, many links up the supply chain, will trigger a supplier creating a new item since the existing item was just delivered in that developing market.”
-
-__Real Estate__ – Continuing the example we used in the starting of the article, a smart contract makes real estate transactions way less stressful. The buyer and the seller draw a smart contract that’ll transfer the ownership of the property to the buyer on receiving the agreed upon amount.
-
-__Insurance__ – Insurance policies can be partially replaced by smart contracts. Health insurance can be disbursed via a smart contract on receiving the confirmation (Proof of Work) of a surgery or health procedure. The Proof of Work itself can be based on a blockchain system wherein every patient’s record is maintained and certain authorities has a key to access the data.
-
-__Personal Identity__ – Every individual could hold their identification proofs digitally and grant access to authorities based on need. This will greatly reduce the friction of identity management and make the process of Know Your Customer (KYC) much simpler. It’s way more secure as well.
-
-Let’s face it, smart contracts have a long way to go before being accepted as a norm. Replacing complex processes and contracts that have been in the market for over 50 years, with standardized, enforceable contracts will take time. With the growing acceptance of blockchain and Bitcoin, we are definitely moving in the right direction.
-
-_The possibilities are endless. Excitement is a natural by product_.
-
-Codebrahma is an expert [Blockchain application development company](/serviceblockchain-development-company/). If you’re thinking of implementing a smart contract for your business, we’d love to talk to you about it and see if we can help!
diff --git a/posts/brief-intro-smart-contracts-endless-possibilities/images/Smart-contracts-01.png b/posts/brief-intro-smart-contracts-endless-possibilities/images/Smart-contracts-01.png
deleted file mode 100644
index c97c2b1..0000000
Binary files a/posts/brief-intro-smart-contracts-endless-possibilities/images/Smart-contracts-01.png and /dev/null differ
diff --git a/posts/build-mobile-app-responsive-web-app/2017-02-08-Should-You-Build-A-Mobile-App-or-A-Responsive-Web-Ap.md b/posts/build-mobile-app-responsive-web-app/2017-02-08-Should-You-Build-A-Mobile-App-or-A-Responsive-Web-Ap.md
deleted file mode 100644
index f789f22..0000000
--- a/posts/build-mobile-app-responsive-web-app/2017-02-08-Should-You-Build-A-Mobile-App-or-A-Responsive-Web-Ap.md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Should You Build A Mobile App or A Responsive Web App'
-date: 2017-02-08
-featuredpost: false
-description: >-
- John walks into a mobile development shop and meets Jane, the sales person. John- “I want to build a mobile app”. Jane- “Great, which devices do you want your app on?” John- “Android, iOS and Windows. We obviously want to
-keywords:
-- web app
-- mobile app
-- responsive web app
-- mobile vs web app
-author: Anand Narayan
-link: /build-mobile-app-responsive-web-app
-category:
-- Development
-tags:
-- mobile app
-- product development
-- responsive app
-- web app
----
-
-> John walks into a mobile development shop and meets Jane, the sales person.
-> John: “I want to build a mobile app”.
-> Jane: “Great, which devices do you want your app on?”
-> John: “Android, iOS and Windows. We obviously want to cover the whole market.”
-> Jane: “Okay, we can do all three. Features?”
-> John: “We are looking for an ecommerce app, what do you suggest?”
-
-Jane pulls out a menu card, much like the ones you see in a restaurant, with features and their costs mentioned next to it. “These are the features that come with an ecommerce app, choose what you want – and we’ll build it for you.”
-
-Welcome to the world of commoditized software, where everyone talks features and what an app can do even before answering a much bigger question, “Why”?
-
-Deciding on a device to deliver your software on needs to be a carefully thought out process. Certain applications work better as a mobile app, while some of them are meant to be used on a laptop.
-
-
-## 1. Complexity
-One of the first questions you need to answer, when deciding on the devices is how complex your application will be.
-
-Take the hugely popular photo sharing app, Instagram, for example. The founders did not originally launch Instagram as a photo sharing app on iOS. It was born out of another location based check – in app called Burbn, the founder created based on the success of Foursquare. Burbn allowed users to check in, tag friends they’re hanging with and post pictures of the meets. The app wasn’t very successful, owing to its overly complicated interface. Churning the data, the founders realized that people were only using Burbn for sharing pics, and thus Instagram was born. Simplicity was and has since been the focus – users could post an image with 3 taps.
-
-Apps like Instagram are mobile specific – they are born because mobile devices exist.
-
-> Mobile applications are supposed to be simple. The more complex they are, the lower are the chances of success.
-
-
-Compare this to an online education platform like Udemy. Udemy is a course creation platform and a marketplace for courses, catering to two types of users – the instructors who create courses and students who consume courses. A course creation platform is a complicated software. It includes creating and editing multiple content types, managing students, managing billing and whatnot. This side of the platform thus, cannot be built as a mobile app – owing to its vastness and complexity. Instructors will need to login in to the web app and create their course.
-
-The students, however, only consume a course. Because the flow and complexity gets greatly reduced, it’s easier to adapt the learning platform into a mobile app.
-
-
-> The general rule of thumb when deciding to build a mobile app is that the user should be able to reach the intended goal of the application with minimum number of clicks (no more than 3).
-
-
-
-## 2. Location and Time Sensitivity
-Taxi apps like Uber allow users to book and call a cab right at their location. There are multiple things that work in tandem and give an extremely seamless experience to the user. Let’s look at the app’s flow:
-
-Alice is shopping around the streets of New Delhi and wants to meet friends for dinner.
-She opens the app, which automatically fetches her location and shows that there are 4 cabs near her.
-
-The app also shows the approximate ETA for the nearest cab is 5 mins.
-Alice books the cab, which arrives at her exact location within 5 minutes.
-Cab drops Alice to her destination, Uber charges her card which she has pre-authorized.
-
-There are multiple things going on in the flow that makes booking a cab so much easier, but Alice being able to book the cab instantly and call it at her exact location without feeding in an address is what makes the experience so amazing.
-
-Imagine having to do the exact same flow via a web browser. Open the browser – navigate to the website – login – book a cab. Again open the browser to check if cab is on its way. Open the browser again to check how far you’re from your drop off location. If you navigate away by mistake, repeat the login procedure again to get to the right screen. You get the gist.
-
-
-> Software applications that primarily work with location and time sensitivity need to be a mobile app and not a web app.
-
-
-
-
-## 3. Frequency of Use
-Last year, the American clothing company Patagonia bid farewell to their native mobile app, urging users to use the website on their mobile web browsers.
-
-> What was that about websites being irrelevant and this being an app only future?
->
-> [pic.twitter.com/tFrw18KG25](https://t.co/tFrw18KG25)
->
-> — Adam Kmiec (@adamkmiec) [June 1, 2016](https://twitter.com/adamkmiec/status/737992375839162368)
-
-Modern mobile web browsers have seriously notched up their technical capabilities to handle heavy websites. They’re also getting increasingly good at their mobile specific functions, including push notifications.
-An average person doesn’t need to shop for clothes every day, or even every other day for that matter. So why would she want to install a native app of an apparel company.
-
-Closer home, Myntra – an online fashion store disabled their website and went app only to encourage retention and frequency of use. This move did not fare well as they saw a lot of their web users moving to competition. Their numbers started dropping and they eventually had to bring back their website.
-
-
-> Applications that warrant a frequent use deserve the effort of creating an app. Otherwise a mobile web app would do just fine.
-
-
-We, at Codebrahma are passionate about building solutions and not just apps. If you have something in mind that you want to build, we’d be more than happy to have a word with you.
-Drop us a line here.
\ No newline at end of file
diff --git a/posts/build-mobile-app-responsive-web-app/images/complex-app.jpeg b/posts/build-mobile-app-responsive-web-app/images/complex-app.jpeg
deleted file mode 100644
index 53558a1..0000000
Binary files a/posts/build-mobile-app-responsive-web-app/images/complex-app.jpeg and /dev/null differ
diff --git a/posts/build-mobile-app-responsive-web-app/images/location-time-apps-org-copy.jpeg b/posts/build-mobile-app-responsive-web-app/images/location-time-apps-org-copy.jpeg
deleted file mode 100644
index ee74271..0000000
Binary files a/posts/build-mobile-app-responsive-web-app/images/location-time-apps-org-copy.jpeg and /dev/null differ
diff --git a/posts/building-products-users-love/2017-01-20-Building-Software-Products-Your-Users-Will-Love.md b/posts/building-products-users-love/2017-01-20-Building-Software-Products-Your-Users-Will-Love.md
deleted file mode 100644
index 505d0c8..0000000
--- a/posts/building-products-users-love/2017-01-20-Building-Software-Products-Your-Users-Will-Love.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Building Software Products Your Users Will Love'
-date: 2017-01-20
-featuredpost: false
-description: >-
- Building software products users love is not easy. More than 90% of companies fail to do so. Read on to know how to create apps that your users will love!
-keywords:
-- building great products
-- building apps
-- software engineering
-- designing
-- product development
-author: Anand Narayan
-link: /building-products-users-love
-category:
-- Business
-tags:
-- apps users love
-- product development
-- outsourced software development
-- useful applications
----
-
-Building a great product is not easy. More often than not (almost 90%, statistically), companies fail at making a truly remarkable product that consumers would’ve love using. In this age, where entrepreneurship is over glorified, getting your product right is the single most crucial part in your entrepreneurial journey. Sure, you’ll find people on the internet swearing by the latest growth hacks that tripled their revenue in 3 months or the marketeers that emphasize on the right PR launch to be the key to success. There’s no denying that growth, marketing, PR, strong core team etc are essential to your product’s success, but only if your product truly resonates with your users. Until recently, raising capital was portrayed like a ‘win’ but how many of those ‘next unicorns’ do you see in business today.
-
-The bottomline for a successful company is building a great product that users love, and there are no two ways about it. What makes conceptualizing a product really tricky, and sometimes the hardest part is that there is no formal training or education behind this. Most of the great innovators of the last decade have used a combination of experience, gut and knowledge to create products that have built billion dollar companies.
-
-While there is no textbook in this world that can teach you how to build great products, there are certain points than can help you minimize risk and maximise your chances of shipping something your users will love. Putting together a framework of sorts using learnings of other successful entrepreneurs and your own experience makes for a good reference point in times of hard decisions, and should absolutely be followed in times of the easier decisions.
-
-## Focus on Shipping the Right Product
-Reid Hoffman, the founder of Linkedin said very famously, “if you’re not embarrassed by the first version of your product, you’ve launched too late.” This statement wonderfully puts into focus, what is necessary. We’ve seen founders and entrepreneurs waste way too much time on brainstorming for the right tech stack, spend nights discussing which features to ship in the first version or fretting over the smallest of glitches, without even knowing whether their product is something that their users will use.
-
-While trying to launch your product the first thing an entrepreneur should focus is on getting the right product-market fit. Marc Andeerssen defines this term as, “being in a good market with a product that can satisfy the market”. While ‘being in a good market’ is mostly concerned with pre-development research, once you’ve identified the market – you should single mindedly focus on getting the right product. It’s okay if your tech stack cannot scale at the moment, a button being slightly out of position will not hurt you much – what will really hurt you is spending way too much time and money on something that your users don’t really need.
-
-A good marker of the product/market fit is having over 40% of your users claiming that they’ll be highly disappointed if you discontinue your product.
-
-## Build on Feedback not Hunch
-Larry Wall, the creator of Perl programming language once said, “When they built The University of California at Irvine they just put the buildings in. They did not put any sidewalks; they just planted grass. The next year, they came back and put the sidewalks where the trails were in the grass.” This anecdote has a very powerful message, something that every consumer facing product developer can learn from.
-
-Listening to your initial users can make a world of difference. Every successful entrepreneur will tell you this. You don’t have to go out and personally talk to your users, though that wouldn’t be such a bad thing, but make sure that your users can reach you. While developing your first version, ensure that you implement enough feedback systems, including direct communication channels like email and in-app analytics. Measuring and collecting data of your application’s usage is a very powerful indicator of how your users are responding. This data will help you create patterns, answer most of your difficult questions, thus empowering you to build features that your users actually want.
-
-## Focus on Simplicity
-It’s quite easy to build a feature rich product that reeks of complexity, what is hard is to build a simple product that gets the job done. Over complicating things can get frustrating for your users. One too many options on the navigation bar, ten actions your users can perform on a tiny mobile view – even though being ‘feature rich’ might sound attractive enough to draw in a user, the complexity will persuade them to look for simpler alternatives. The human mind craves simplicity, that’s where the beauty lies.
-
-When iterating and chalking out specifications for your subsequent versions, think like an editor. This means removing redundancy, adding a bit of grace to the process and make sure there is nothing these that takes space but does not value. Don’t be afraid of removing a feature that your numbers indicate is not working. Even though the main idea of iterations is to build upon previous versions, ensure that your app does not get over complicated. If you’re in two minds about a certain feature, it’s better to shelve it for a later version.
-
-Like I mentioned earlier, there is no single path to a successful product. And that is what makes the journey so attractive. At Codebrahma, we live to create products that people would love to use. Building an app for us is not just putting together a bunch of features, it’s an elaborate solution to a problem people face. If you are looking to solve a certain problem, and are looking for software help for the same, we’d love to have a sit down with you!
diff --git a/posts/building-progressive-web-app-react/2017-08-19-Building-Progressive-Web-App-With-React.md b/posts/building-progressive-web-app-react/2017-08-19-Building-Progressive-Web-App-With-React.md
deleted file mode 100644
index d57efe2..0000000
--- a/posts/building-progressive-web-app-react/2017-08-19-Building-Progressive-Web-App-With-React.md
+++ /dev/null
@@ -1,356 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Building Progressive Web App With React'
-date: 2017-08-19
-featuredpost: false
-description: >-
- This article will help in building progressive web App with React JS. Also you can use the boiler plate for your future work.
-keywords:
-- Progressive Web App
-- PWA
-- Progressive Web app
-- PWA with React
-author: Balram Khichar
-link: /building-progressive-web-app-react
-category:
-- Tutorial
-tags:
-- react js
-- reactjs
-- pwa
-- pwa app development
-- app development
----
-[Progressive web apps](https://developers.google.com/web/progressive-web-apps/) (PWAs) came in the lime light recently. It uses the best of web and the best of apps to give a smooth experience to users and feels like native app. PWAs are responsive and fast, consume less data, need less storage space, support push notifications and offline use in browser. Twitter recently launched [mobile.twitter.com](https://mobile.twitter.com/) which delivers mobile app like experience to users in browser without actually installing on user device. This article focuses upon building progressive web app with React JS
-
-
-
-We’re going to build a simple PWA in this article. You can use this code as boilerplate for further PWA developments.
-
-
-## Getting Started with PWA
-First let’s generate a React application with create-react-app. You can run the following commands to generate the React app.
-```sh
-npm install -g create-react-app
-
-create-react-app pwa-app
-```
-Next we will install React Router:
-
-```sh
-cd pwa-app
-
-npm install --save react-router@3.0.5
- ```
-
-Now replace your `src/App.js` content with below gist. It will give us a basic template with navigation.
-```jsx
-import React, { Component } from 'react';
-import { Router, browserHistory, Route, Link } from 'react-router';
-import './App.css';
-
-const NavBar = () => (
-
- Feed
- Profile
-
-);
-
-const Template = ({ title }) => (
-
-
-
- This is the {title} page.
-
-
-);
-
-const Feed = (props) => (
-
-);
-
-const Profile = (props) => (
-
-);
-
-class App extends Component {
- render() {
- return (
-
-
-
-
- );
- }
-}
-
-export default App;
- ```
-Next we need to update the default styles a bit to make our app look clean. Replace your __src/App.css__ `with below styles.
-```css
-.navbar {
- background-color: #01C8E5;
- text-align: center;
-}
-
-.navbar a {
- display: inline-block;
- padding: 10px;
- color: #fff;
- text-decoration: none;
-}
-
-.page-info {
- text-align: center;
- font-weight: bold;
-}
- ```
-Finally run __`npm start`__ to check the app in the browser. Now this is a basic app with 2 routes. We will now convert it to PWA.
-
-
-## Install Lighthouse and Audit
-Lighthouse is an open-source, automated tool which helps us to test our app against PWA checklist. It also provides audits for performance, accessibility, and more. You can download and install in your chrome browser by following this [link](https://chrome.google.com/webstore/detail/lighthouse/blipmdconlkpinefehnmjammfjpmpbjk/).
-
-
-
-Next let’s test our app using Lighthouse. Click on Lighthouse icon in the top right corner of Chrome and then click on Generate Report button. This is how the generated report looks like –
-
-We will fix all 6 failed audit next.
-
-## Register a Service Worker
-Services worker act as proxy servers that sit between app and network. Using this we will intercept network requests and serve cached files. It will allow our web app to work even if network is offline.
-
-First create a blank __worker.js__ file in public folder of the app and add this block of code in that file.
-```jsx
-// Flag for enabling cache in production
-var doCache = false;
-
-var CACHE_NAME = 'pwa-app-cache';
-
-// Delete old caches
-self.addEventListener('activate', event => {
- const currentCachelist = [CACHE_NAME];
- event.waitUntil(
- caches.keys()
- .then(keyList =>
- Promise.all(keyList.map(key => {
- if (!currentCachelist.includes(key)) {
- return caches.delete(key);
- }
- }))
- )
- );
-});
-
-// This triggers when user starts the app
-self.addEventListener('install', function(event) {
- if (doCache) {
- event.waitUntil(
- caches.open(CACHE_NAME)
- .then(function(cache) {
- fetch('asset-manifest.json')
- .then(response => {
- response.json();
- })
- .then(assets => {
- // We will cache initial page and the main.js
- // We could also cache assets like CSS and images
- const urlsToCache = [
- '/',
- assets['main.js']
- ];
- cache.addAll(urlsToCache);
- })
- })
- );
- }
-});
-
-// Here we intercept request and serve up the matching files
-self.addEventListener('fetch', function(event) {
- if (doCache) {
- event.respondWith(
- caches.match(event.request).then(function(response) {
- return response || fetch(event.request);
- })
- );
- }
-});
- ```
-We will check whether the browser supports service workers, and then register our __worker.js__. To do so add the below script to __public/index.html__. (Notice that we have removed “shrink-to-fit=no” from viewport meta tag.)
-```html
-
-
-
-
-
-
-
-
- React App
-
-
-
-
-
-
-
- ```
-Restart you app and reload the browser. You will see “Worker registration successful” message in developer console. Now let’s re-generate the Lighthouse report.
-
-
-
-## Improve Progressive Nature of the app
-Currently, our app renders empty __root__ div till the JavaScript loads and React hooks up the initial route. We need make sure our app works without any JavaScript loading and displays some HTMl and CSS before React comes into the play. Here’s how our updated __index.html__ looks like.
-```html
-
-
-
-
-
-
-
-
- React App
-
-
-
-
-
-
-
-
- ```
-Re-audit the app using Lighthouse and you will see the performance is improved;
-
-## Add Splash Icons
-We need to add a 512×512 icon to show up on splash screen. For doing so we need to update the manifest.json and put the icon in public folder.
-```json
-{
- "short_name": "React App",
- "name": "Create React App Sample",
- "icons": [
- {
- "src": "icon-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "icon-512x512.png",
- "sizes": "512x512",
- "type": "image/png"
- }
- ],
- "start_url": "/",
- "display": "standalone",
- "theme_color": "#000000",
- "background_color": "#ffffff"
-}
- ```
-
-We also need to add these meta tags to inform the browser that our app is a PWA.
-
-```html
-
-
-
-
- ```
-
-## Let’s Deploy
-We’re now only missing HTTPS and caching which will be fixed after deploy. Update the __doCache__ flag to __true__ in worker.js file. Next, create a new project in firebase-console with name __Pwa App__. Run the following commands in project directory.
-
-```sh
-npm install -g firebase-tools
-firebase login
-firebase init
- ```
-Make sure your __firebase.json__ looks like this-
-
-```js
-{
- "hosting": {
- "public": "build",
- "rewrites": [
- {
- "source": "**",
- "destination": "/index.html"
- }
- ]
- }
-}
- ```
-After initialisation build the app and deploy.
-```sh
-npm run build
-firebase deploy
- ```
-
-Now when we do audit using Lighthouse on deployed URL. We should see this result.
-
-
-
-and We’re done! Now we have a working base for building progressive web app with React JS. We’re ready for the future of web applications. 😀
-
-Demo URL: [Pwa Demo App](https://pwa-app-cb.firebaseapp.com/)
-
-Code: [Github](https://github.com/balramkhichar/progressive-webapp-base)
\ No newline at end of file
diff --git a/posts/building-progressive-web-app-react/images/Screen-Shot-2017-08-29-at-11.37.12-AM.png b/posts/building-progressive-web-app-react/images/Screen-Shot-2017-08-29-at-11.37.12-AM.png
deleted file mode 100644
index 33ed67d..0000000
Binary files a/posts/building-progressive-web-app-react/images/Screen-Shot-2017-08-29-at-11.37.12-AM.png and /dev/null differ
diff --git a/posts/building-progressive-web-app-react/images/google-lighthouse.png b/posts/building-progressive-web-app-react/images/google-lighthouse.png
deleted file mode 100644
index 308e7f6..0000000
Binary files a/posts/building-progressive-web-app-react/images/google-lighthouse.png and /dev/null differ
diff --git a/posts/building-progressive-web-app-react/images/pwa-audit-2.png b/posts/building-progressive-web-app-react/images/pwa-audit-2.png
deleted file mode 100644
index aeefb06..0000000
Binary files a/posts/building-progressive-web-app-react/images/pwa-audit-2.png and /dev/null differ
diff --git a/posts/building-progressive-web-app-react/images/pwa-audit-final.png b/posts/building-progressive-web-app-react/images/pwa-audit-final.png
deleted file mode 100644
index 4ee9376..0000000
Binary files a/posts/building-progressive-web-app-react/images/pwa-audit-final.png and /dev/null differ
diff --git a/posts/building-progressive-web-app-react/images/pwa-reliable-1024x577.png b/posts/building-progressive-web-app-react/images/pwa-reliable-1024x577.png
deleted file mode 100644
index 210be24..0000000
Binary files a/posts/building-progressive-web-app-react/images/pwa-reliable-1024x577.png and /dev/null differ
diff --git a/posts/cb-react-forms/2019-07-02-cb-react-forms.md b/posts/cb-react-forms/2019-07-02-cb-react-forms.md
deleted file mode 100644
index 4b1384e..0000000
--- a/posts/cb-react-forms/2019-07-02-cb-react-forms.md
+++ /dev/null
@@ -1,168 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'CB React Forms'
-date: 2019-07-02
-featuredpost: false
-description: >-
- Create forms with an intuitive drag-n-drop interface that supports a number of form fields with built-in validations.
-author: Sachin Jadhav
-link: /cb-react-forms
-tags:
-- react
-- forms
-- form builder
-- drag and drop
----
-
-
-
-The most recurrent thing on web nowadays is web forms. Every time you log in, comment on a blog, tweet, you’re filling in a form. How these forms are presented speaks volumes about the organisation asking for that information. Filling forms takes time and so it is desirable that web forms ask all the relevant information in simple, interactive and easy to fill manner. We at [Codebrahma](/react-js-development) are making tools to help developers create secure and pretty forms in React.
-
-[**_CB React Forms_**](https://github.com/Codebrahma/cb-react-forms) is a React library that gives users the power to create forms using an intuitive drag and drop interface. The library has two modules:
-
-- Form Builder
-- Form Generator
-
-**_Form-Builder_** component supports a number of form fields and some html tags. Just choose the fields you’d like to add and drag them over to your form. Go beyond a simple contact or order form, and create seamless workflows that can be used in any department of your organization. Use online surveys to collect customer opinions, create an event registration form for your next conference or find the perfect new employee with a job application form. The possibilities are endless.
-
-**_Form-Generator_** is a companion component to Form-Builder that lets you render the results of the created form. Form-Generator is meant to automatically generate a React form based on the JSON data submitted by the Form-Builder. A typical use case would have Form-Builder in an admin area of a site or app and Form-Generator on the front-end.
-
-
-## Form Builder
-
-**Features:**
-
-- _Customization_ - enable only the fields you need, use your own icons and field names.
-- Live _Preview_ mode for immediate check of your result.
-- Choose the fields you’d like and drag them in your form.
-- This library renders the form fields using the **_Bootstrap_** semantics. That means your forms will be beautiful by default.
-
-**Easily collect data with these flexible field types:**
-
-- Text Input Field
-- Number Field
-- Short Answer Field
-- Long Answer Field
-- Dropdown Field
-- Radion Button Field
-- Checkbox Field
-- Tags Field
-- Star Ratings Field
-- Slider Range Field
-- URL Field
-- …more to come.
-
-**Installation:**
-
-CB React Forms is available through npm/yarn.
-
-```bash
-$ npm install --save cb-react-forms
-```
-```bash
-$ yarn add cb-react-forms
-```
-
-Once you have the module installed include it in your project.
-
-```jsx
-import { FormBuilder } from ‘cb-react-forms’;
-```
-
- **Usage:**
-
-```jsx
-import React from 'react';
-import ReactDOM from 'react-dom';
-
-import { FormBuilder } from 'cb-react-forms';
-
-const toolbarItems = [
- {
- key: "Header",
- name: "Header Text",
- icon: "fa fa-header"
- },
- {
- key: "Paragraph",
- name: "Paragraph",
- icon: "fa fa-paragraph"
- },
- {
- key: "Dropdown",
- name: "Dropdown",
- icon: "fa fa-caret-square-o-down"
- }
-];
-
-const Example = props => (
-
-);
-
-ReactDOM.render(, document.getElementById('root'));
-```
-
-With intuitive drag-n-drop UI create a form with Form-Builder component, use the Editor to edit each field, mark the required fields with the “Required” checkbox, check the live preview to make sure that it’s exactly what you need, then export the JSON code of the created form and apply to your application with Form-Generator component.
-
-Select the list of available form fields from the [docs](https://github.com/Codebrahma/cb-react-forms#list-of-toolbar-items).
-
-**Form submission:**
-
-You can pass a function as the onSubmit prop to your Form-Builder component to listen to when the form is submitted. It will be passed a JSON array having a list of form fields you chose.
-
-```jsx
-const onSubmit = (formData) => console.log(formData);
-```
-
-## **Form Generator**
-
-Form-Generator component is meant to automatically generate a React form based on the JSON data submitted by the Form-Builder component.
-
-**Features:**
-
-- Render forms just by importing the FormGenerator component and passing in the JSON formData as a prop.
-- Basic validations support out of the box.
-- View pre-filled form fields by providing the JSON responseData.
-- Supports read-only mode where the form can be viewed in format where all the form fields are disabled.
-
-**Usage:**
-
-```jsx
-import React from "react";
-import ReactDOM from "react-dom";
-import { FormGenerator } from 'cb-react-forms';
-
-const Example = props => (
-
-);
-
-ReactDOM.render(, document.getElementById("root"));
-```
-
-Use the Form-Generator component in your app or website and provide the JSON formData as a prop to get the final form. Provide an onSubmit function that defines what is to be done with the form answers submitted by the user.
-
-
-### Dependencies:
-
-In order to make the forms secure and pretty, there are a few dependencies other than React.
-
-- redux-form
-- draft-js
-- react-draft-wysiwyg
-- react-dnd
-- react-star-ratings
-- react-select
-
-### **Links:**
-
-- [Sample Project](https://cb-react-forms.netlify.com/) running the code above.
-- [Github](https://github.com/Codebrahma/cb-react-forms) — keep an eye on this for more awesome features.
-- [CodeSandbox](https://codesandbox.io/s/cb-react-forms-xzn8w)
\ No newline at end of file
diff --git a/posts/cb-react-forms/images/cb-react-forms-hero.jpeg b/posts/cb-react-forms/images/cb-react-forms-hero.jpeg
deleted file mode 100644
index 6ba6b90..0000000
Binary files a/posts/cb-react-forms/images/cb-react-forms-hero.jpeg and /dev/null differ
diff --git a/posts/chatbot-business-metrics-use-cases/2017-01-13-Chatbots-for-Businesses:-Metrics-and-Use-Cases.md b/posts/chatbot-business-metrics-use-cases/2017-01-13-Chatbots-for-Businesses:-Metrics-and-Use-Cases.md
deleted file mode 100644
index 60a466f..0000000
--- a/posts/chatbot-business-metrics-use-cases/2017-01-13-Chatbots-for-Businesses:-Metrics-and-Use-Cases.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Chatbots for Businesses: Metrics and Use Cases'
-date: 2017-02-14
-featuredpost: false
-description: >-
- A look at some of the metrics to track when you're implementing a chatbot for your business, along with a few examples of businesses that use chatbots.
-author: Anand Narayan
-link: /chatbot-business-metrics-use-cases
-category:
-- Business
-tags:
-- Chatbot Developers bangalore
-- chatbot
-- chatbots for business
----
-
-The last decade (2000’s) was all about search engine optimization and marketing for businesses. Early 2010 saw businesses flocking to social media to actively engage with the users, and the past five odd years have been mostly about mobile marketing and the rise of apps. But as app business plateaus with more and more users preferring to not download apps – we see a new platform for businesses to engage with the users on – messaging platforms.
-
-The rise of messaging platforms has been unparalleled, with the top four messaging apps combined boasting of more users than the top four social platforms. New age businesses are engaging with users on the user’s choice of platform, and not the other way around. Newer platform, less fatigue, less competition, there’s no reason for a business to not jump on the messaging platform bandwagon.
-
-But how do you scale the process to be able to ‘chat’ with every user simultaneously? This is where chatbots come into picture – rapid developments in the field of NLP and AI have democratized chatbot technology, driving down development and implementation costs. If you’re thinking whether a chatbot fits your business need, these metrics will help you decide:
-
-
-## Boost In Engagement Rates
-
-Traditional marketing content – videos, images, text based content – are all one way. There’s virtually no real engagement from the user’s side, except that they read/watch what you’re created. With chatbots, the users are more hands-on and are actually ‘engaged’. If your bot is decently versed in communication, and is put in front of the right audience, you’ll see a boost in your audience engagement rate.
-
-Case in point – Disney recently launched a Facebook Messenger campaign where they created a chatbot for a popular character from their movie Zootopia, called Officer Judy Hopps. Users were able to engage with Officer Judy Hopps via the Messenger platform where they’d together embark on various detective cases.
-
-This campaign enjoyed enormous success with people talking with the bot for over 10 minutes on an average and many sharing their achievements with their friends via a simple share option within the chat itself.
-
-## Segmented Targeting
-
-In chatbot analytics, there’s a metric called conversation steps. A conversation step is defined as one round of back and forth between the user and chatbot. So if the user messages a ‘Hi’ and gets a reply ‘Hi’ from the chatbot, it’s counted as one conversation step.
-
-Longer conversations between a user and a chatbot may or may not be a good thing. Considering a scenario where a user is trying to order a cab using a chatbot, the conversation should be as small as possible with the end goal – book a cab – achieved.
-
-This metric can also be used to segment users and define separate flows for each, to maximise conversion. This is what PennyCat, a discount hunting app did using a Facebook bot. They created a game with discount coupons as rewards. People who had more than 40 conversational steps were tagged as ‘Game Lovers’ and people who stopped playing as soon as they won a discount were tagged as ‘Discount Lovers’. Once they identified the ‘Game Lovers’, they were able to target them with specific discounts to convert them into users. This segmented targeting led to a 70% increase in coupon use.
-
-### Personalization
-
-Ads and other marketing paraphernalia can only be personalised to cater to group of audience, but not users. Chatbots on the other hand can be highly personalized as per the user. Connecting the bot with the business CRM, the bot will be able to address the user with their names, and can even pull out the user’s previous activities for a more meaningful conversation.
-
-Take for example, the French cosmetic store chain Sephora. They recently launched a chatbot on Kik that shares tips and tutorials on makeup, after learning what the user wants. The bot also suggests cosmetics and beauty products that users can purchase.
-
-The travel company, Hipmunk, recently launched an AI powered travel planning assistant across multiple platforms. An email bot, chatbot that lives on Slack, Skype and Messenger and a Calendar bot that keeps an eye on your calendar and suggests bookings accordingly. This is the closest we’ve gotten to a virtual assistant that can completely take care of all your travel requirements.
-
-Closing thoughts, we believe chatbots can be a boon to your business. How you apply and use them to boost marketing, customer service or sales is only limited by your creativity!
-
-If you own a business and are not sure whether chatbots are right for you, [drop us a message and we’ll schedule a call with you to help you with your decision](/contact). If you’re convinced that chatbot is essential to your business, drop us a line and we’ll [help build it for you!](/contact)
\ No newline at end of file
diff --git a/posts/chatbots-can-help-save-money/2017-01-25-Chatbots-Can-Help-You-Save-Money.md b/posts/chatbots-can-help-save-money/2017-01-25-Chatbots-Can-Help-You-Save-Money.md
deleted file mode 100644
index 6258ae6..0000000
--- a/posts/chatbots-can-help-save-money/2017-01-25-Chatbots-Can-Help-You-Save-Money.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Chatbots Can Help You Save Money'
-date: 2017-01-25
-featuredpost: false
-description: >-
- Lots of financial institutions are getting on the chatbot bandwagon to increase sales, and help with customer service. We ourselves have seen a lot of clients coming in, asking for chatbots. While certain skeptics believe it’s too early and warn
-keywords:
-- chatbots
-- fintech
-- financial assistant
-- conversational banking
-author: Anand Narayan
-link: /chatbots-can-help-save-money
-category:
-- Business
-tags:
-- chatbots
-- chatbots for business
-- Fintech
----
-Lots of financial institutions are getting on the chatbot bandwagon to increase sales, and help with customer service. We ourselves have seen a lot of clients coming in, asking for chatbots. While certain skeptics believe it’s too early and warn entrepreneurs to not jump in blindly, we believe financial institutions can only benefit from chatbots.
-
-Fintech bots, as they are referred to in the digital world are aplenty. Countries like UK and US are already seeing personal finance bots that promise friction free, conversational banking to its users gaining traction. One thing that gives third party applications an edge over banking institutions is that they let you connect multiple accounts with multiple banks. A banking institution’s chatbot can only properly serve its customers if the customer has her complete financial portfolio with that bank.
-
-Here we look at 3 personal finance bots that are already making a splash in the international market:
-
-
-
-### Abe
-
-[(https://www.abe.ai)](https://www.abe.ai)
-
-An AI software company based out of Orlando, Abe is a conversational bot available on SMS and Slack. Once a user connects their bank accounts with Abe, the software runs a series of statistical and machine learning algorithms to identify a series of recurring and non-recurring expenses. These are then classified into categories to mark expenses. This helps Abe predict how much cash the user can work with over a given period of time. Because the system is based on machine learning, the algorithms ‘learn’ the spending habits of the user and are able to give better predictions over time.
-
-Unlike other financial apps where the user is required to set goals on their own, Abe automates this, greatly reducing the friction. Users can ask questions like, “How much can I spend this weekend” or “How much did I spend on Uber last month” and get answers as a message response.
-
-The service is completely free to the end user and they’re only serving in the US currently. Users can chat with Abe via SMS or on Slack (as a direct message) and the team is working on getting this service on Facebook Messenger and Amazon Alexa very soon.
-
-
-
-### Chip
-
-[(https://getchip.uk/)](https://getchip.uk/)
-
-Chip is a UK based personal finance bot that helps users save money. “The Automatic Savings App” as proclaimed on their website, Chip is desinged to help people save money no matter how much they earn. Users can connect their bank accounts with Chip via a 256 bit bank grade encryption. The app employs artificial intelligence and machine learning algorithms to identify how much a user can afford to save every month. The app then automatically puts away the amount into a savings account every month. What is impressive is that the amount is flexible and calculated on the basis on actual expenditure, so if you spend more than usual in a specific month, Chip saves slightly less – if you spend less, more money is saved.
-
-Chip has developed its own Android and iOS app, while keeping the flow of information conversational. It’s like talking to your personal banking assistant via the app. Talking to Techcrunch, the founders shared their big plans for Chip, which they envision turning into a complete financial services app providing users a host of financial products at transparent pricing.
-
-
-
-### Cleo
-
-[(https://www.meetcleo.com)](https://www.meetcleo.com)
-
-Cleo terms itself as a smart assistant for your money. Not very unlike the other two bots mentioned above, Cleo lets users connect their bank accounts and credit card data with it. Running analysis on user’s expenditure history, Cleo then provides intelligent insights and answers the user’s query in a conversational form. Currently, Cleo is available on Facebook Messenger and SMS with plans to launch on Amazon Alexa and Google Assistant very soon.
-
-The motivation behind Cleo is that the current financial services and products are not very good, and could be improved. Finances could be made easy to understand and managing money could be become a lot easier by leveraging technology. The products focus is to make managing money really simple as a whole. Their ideal user being people who hate spending time on spreadsheets managing their finances.
-
-Currently in a private alpha mode, Cleo plans to offer a whole range of financial products in suited to individual needs and prices eventually.
-
-Fintech chatbots are just beginning to create a serious market for themselves. The possibilities with conversational banking are endless. There’s no wonder that Fintech chatbots are one of the hottest market to look for in this year.
-
-
diff --git a/posts/chatbots-can-help-save-money/images/abe.png b/posts/chatbots-can-help-save-money/images/abe.png
deleted file mode 100644
index c91f91e..0000000
Binary files a/posts/chatbots-can-help-save-money/images/abe.png and /dev/null differ
diff --git a/posts/chatbots-can-help-save-money/images/chip.png b/posts/chatbots-can-help-save-money/images/chip.png
deleted file mode 100644
index 7f12b3e..0000000
Binary files a/posts/chatbots-can-help-save-money/images/chip.png and /dev/null differ
diff --git a/posts/chatbots-can-help-save-money/images/cleo.png b/posts/chatbots-can-help-save-money/images/cleo.png
deleted file mode 100644
index 4e726bb..0000000
Binary files a/posts/chatbots-can-help-save-money/images/cleo.png and /dev/null differ
diff --git a/posts/chatbots-for-businesses/2016-12-19-chatbots-for-Businesses-Does-Your-Business-Need-A-Chatbot.md b/posts/chatbots-for-businesses/2016-12-19-chatbots-for-Businesses-Does-Your-Business-Need-A-Chatbot.md
deleted file mode 100644
index dea20f4..0000000
--- a/posts/chatbots-for-businesses/2016-12-19-chatbots-for-Businesses-Does-Your-Business-Need-A-Chatbot.md
+++ /dev/null
@@ -1,116 +0,0 @@
----
-templateKey: "blog-post"
-title: "Chatbots for Businesses: Does Your Business Need A Chatbot?"
-date: 2016-12-19
-featuredpost: false
-link: /chatbots-for-businesses
-description: >-
- Chatbots are the all-rage these days. Everyone is gushing about how chatbots can benefit your business. But does your business really need a chatbot?
-author: Anand Narayan
-category:
-- Business
-tags:
-- chatbots
-- chatbots for business
----
-
-Chatbot is the latest buzzword in the tech world. Everybody is gushing over how amazing it is to have a chatbot for your business. In this article we quickly take you through the ins and outs of having a chatbot and whether or not your business would benefit from it.
-
-## What are chatbots?
-
-Chatbots are computer programs designed to simulate human conversations – and they can be broadly classified into two types:
-
-AI powered chatbots – chatbots use artificial intelligence to ‘learn’ from multiple conversations, draw context, and respond within that context. They are designed to ‘talk’ to humans as a ‘human’.
-
-Script based chatbots – chatbots have a specific flow. They have a predefined script that they follow and are generally implemented for a specific use case, could be customer service, shopping assistants or weather update bots.
-
-## Why Chatbots?
-
-Messaging apps have taken the world by storm. The top four messaging app have a combined user base of upwards of 3 billion and they recently surpassed the combined active user base of the top four social media platforms.
-
-
-Source: Business Insider
-
-Consumers prefer to connect with businesses over chat, reveals a recent study done by Facebook. Whether buying a new pair or boots or trying to get their query resolved, over 53% of users prefer to do it over a chat. Incidentally, around the same percentage of users surveyed believe that chatting with the business directly would help them resolve their queries faster. A staggering 45% of users surveyed feel that ‘talking’ to a business over their preferred chat application would be more convenient as they would not need to use a separate service or an app on their device.
-
-The most important numbers that would convince any business owner to get a chatbot for their business are:
-
-63% of the participants in the survey said that they message more with businesses than they did two years ago.
-
-67% of the participants expect to message more with businesses in the next two year.
-
-Now that we’ve established that chatting with your customers over one of the popular messaging applications will be beneficial for your business, how do you make sure that every query on the chat is answered within a few seconds, at any time of the day?
-
-This is where chatbots fit in. They are the perfect solution to 1:1 marketing at scale. Pre-programmed chatbots can simultaneously hold conversations with each and every user, no matter where they are, no matter what time it is. And if the customer needs something your chatbot cannot answer – you easily channel the request to your ‘human’ support team. Can’t get any better that this!
-
-Sources: Business Insider
-
-## How can chatbots be used for your business?
-
-Luckily, each and every business that can benefit from an online presence can also use a chatbot to boost their business. Breaking down the business flow into pre-purchase and post-purchase, here are some use cases you can draw inspiration from:
-
-
-
-## Pre purchase chatbots
-
-### 1. Query Bots
-
-Let’s say you run a pizza delivery shop. Some of the general queries your potential customers might have are:
-
-What is your closing time.
-
-Do you deliver at a particular location.
-
-Are you running any discounts or offers.
-
-Instead of the customer having to call you on your phone and engaging your employee, you can easily configure a chatbot to answer these questions. The way to go about implementing this would be to compile a list of 10 (or more) most frequently asked questions and program the bot to answer them.
-
-__2. Shopping Assistant Bots__
-
-These bots can help you sell more if you’re running an e-commerce store. Let’s say you sell custom footwear. An example conversation that could happen between your chatbot and a potential customer:
-
-> **ShoeBot**: Hi there, what are you looking to buy today?
->
->
->
Men’s Footwear
->
Women’s Footwear
->
->
-> **Customer**: Men’s Footwear
-> **ShoeBot**: Great, what kind of Men’s Footwear
->
->
->
->
->
-> **Customer**: $75 – $150
-> **ShoeBot**: Great, what do you think of these:
-
-And the bot lists down the options you have that fit the filters – the customer can see the products, choose to buy or see more options. The possibilities are endless!
-
- __3. Explainer Bots__
-If you’re running a [SaaS application company](/saas-development-services/), you could use a bot to help people get a feel for your product. These bots would usually live on your website via a chat tool (something like smooch) and help answer queries your potential customers might have.
-
-Using a combination of interactive media like images, videos and using links to drive people to the right pages, a chatbot could be a big boost to your customer success team. Ofcourse, human help should always be at hand, incase your bot has trouble understanding your customers.
-
-### Post Purchase Bots
-
-A good after sales connect with your users can make a big difference in how your brand is perceived, and incidentally, this is where most bigger brands struggle. Implementing chatbots to help your customers post their purchase is something every brand should look at.
-
-These bots would exists with only one aim – to help your customers with their post purchase issues. Scheduling returns, registering complaints, taking feedback – these bots can be configured to do anything that has a process to it.
-
-If you’re selling high end watches, you could implement a bot that would help your customers find service centers and schedule a servicing.
-
-Advancement in chatbots have opened up a whole new platform for businesses. And this is just the beginning. The next year will see a majority of businesses adapting chatbots in some form.
-
diff --git a/posts/chatbots-for-businesses/images/aso.png b/posts/chatbots-for-businesses/images/aso.png
deleted file mode 100644
index 1adb449..0000000
Binary files a/posts/chatbots-for-businesses/images/aso.png and /dev/null differ
diff --git a/posts/chatbots-for-businesses/images/chatbots-for-business.png b/posts/chatbots-for-businesses/images/chatbots-for-business.png
deleted file mode 100644
index a883ab5..0000000
Binary files a/posts/chatbots-for-businesses/images/chatbots-for-business.png and /dev/null differ
diff --git a/posts/choosing-right-tech-stack-product/2017-04-25-CHOOSING-THE-RIGHT-TECH-STACK-FOR-YOUR-PRODUCT.md b/posts/choosing-right-tech-stack-product/2017-04-25-CHOOSING-THE-RIGHT-TECH-STACK-FOR-YOUR-PRODUCT.md
deleted file mode 100644
index ca2feac..0000000
--- a/posts/choosing-right-tech-stack-product/2017-04-25-CHOOSING-THE-RIGHT-TECH-STACK-FOR-YOUR-PRODUCT.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Choosing The Right Tech Stack For Your Product'
-date: 2017-04-25
-featuredpost: false
-description: >-
- Choosing the right tech stack for your product can be a challenging task. But how important is getting the right technologies in place from the start?
-author: Anand Narayan
-link: /choosing-right-tech-stack-product
-category:
-- Development
-tags:
-- Product development
-- programming languages
-- project management
----
-Starting to build a new product and seeing your idea take share can be an exhilarating feeling. But founders, specially those without a tech background, have a hard time deciding which technology stack should they use for their product. The information overload on the internet can sometimes only add to the confusion. If you are in such a position, this article will help you reduce the variables in your decision making and help you conclude faster.
-
-## What Is A Tech Stack
-Let’s start from the basics. A tech (technology) stack is a set of technologies, programming languages and software products that is used to create a functional web (or mobile) application.
-
-A typical web application is divided into two parts:
-
-
Backend (concerning server side)
-
Frontend (concerning the user/client side)
-
-### Backend Tech Stack
-Backend is the umbrella term for programming the business logic, working with the Database, server side hosting and deployments. The client side (website/app) communicates with the backend for processing user requests, accessing the database and executing simple CRUD (create, read, update, delete) operations.
-
-One of the most popular backend stacks, until the recent times was LAMP which is an abbreviation for Linux, Apache, MySQL and PHP. These are the backend technologies used – PHP as the scripting language, MySQL as the database, Apache as the web server and Linux being the server operating system.
-
-Python – Django framework is another very popular backend stack used by entrepreneurs to quickly hack together a working prototype.
-
-Javascript which was mainly a browser scripting language until a few years ago, has seen tremendous rise in popularity as a server side programming language. A complete Javascript based stack (including the frontend) called MEAN has become one of the more popular choices for tech stack for MVPs. MEAN stands for MongoDB, Express.js, Angular.js and Node.js. MongoDB being the nosql database, Express and Node running on the backed while AngularJS is used to render the interface. Due to its open source nature and availability of extensive libraries available, a lot of modern web applications are being built on the MEAN stack.
-
-
-
-## Frontend Tech Stack
-[Frontend](/front-end-development-company/) is the part of the application a user interacts with. It could be a website, web app or a mobile app. When building for the web, the frontend consists of three technologies:
-
-
HTML – the markup language
-
CSS – the style sheet
-
Javascript – browser scripting language
-
-[Google’s AngularJS and Facebook’s [ReactJS](/react-js-development/) are two of the most popular frontend frameworks in the market today. They both are language independent, meaning no matter what tech stack you’ve used for your backend – you could use either of these frameworks to create impressive user interfaces. While we have teams working on both AngularJS and ReactJS – we’re a bit more biased towards using ReactJS for frontend, specially due to the React Native library for mobile.
-]
-For CSS, Twitter’s Bootstrap has been the goto framework since launch. The interactive components in Bootstrap are built on JQuery.
-
-When building applications on mobile, using the native languages is the first preference due to more control and easier hardware access. Java for Android and Objective-C/Swift for iOS. Although, there are plenty of cross platform frameworks available, none have caught the developers attention like [React Native](/react-native-development-company/).
-
-
-
-## Factors Influencing Choice Of Tech Stack
-There are lot of factors that could influence a company’s choice of tech stack. Objectively, to help with decision making, we believe the following factors are the most important.
-
-## Stage of your business
-Depending on which stage your business or product is, you technology stack may or may not play a very important factor. For example, if you’re just starting out, your goal would be to get to the market in the shortest time possible with a working prototype. In such a case any language/framework/CMS tool that lets you put together a working prototype and has the shortest learning curve should be your goto. Ruby on Rails is considered fast for development due to a vast number of ‘gems’ available. Working prototypes can also be build on WordPress 🙂
-If your business is within the Finance or Banking domain, you might want to go with languages like Java or .Net (C#) due to compliance and regulatory issues.
-
-## Availability of talent
-Availability of developers who are going to build your product is one of the most influential factors defining your company’s tech stack. Your developer friend might be gushing about the awesomeness that is Go, but you might have a hard time finding solid Go developers easily. One of the best ways to gauge a programming language’s popularity and available developers is to regularly visit sites like Github and Stackoverflow. The number of questions and answers around a particular language could give you a fair idea about the community around that language. Number of contributors for a particular framework/library on github is also a helpful indication to the popularity of the language.
-
-If you’re concerned about the scalability of your product, known that unless you have very specific & extreme requirements, almost all languages would be able to handle your traffic. More often than not, applications don’t scale well because of poor architecture and product design rather that the choice of programming language.
-
-In our humble opinion, a bias towards decision is way more important that fretting about the right tech stack early on. Choose whatever tech stack you and your dev team feel most confident with. If, however, you have any specific concerns don’t hesitate to [drop us a line here](/contacts).
\ No newline at end of file
diff --git a/posts/choosing-right-tech-stack-product/images/choosing-right-tech-stack-2.jpeg b/posts/choosing-right-tech-stack-product/images/choosing-right-tech-stack-2.jpeg
deleted file mode 100644
index 9bc2cd2..0000000
Binary files a/posts/choosing-right-tech-stack-product/images/choosing-right-tech-stack-2.jpeg and /dev/null differ
diff --git a/posts/choosing-right-tech-stack-product/images/choosing-right-tech-stack-3.jpeg b/posts/choosing-right-tech-stack-product/images/choosing-right-tech-stack-3.jpeg
deleted file mode 100644
index bd1b062..0000000
Binary files a/posts/choosing-right-tech-stack-product/images/choosing-right-tech-stack-3.jpeg and /dev/null differ
diff --git a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/2017-05-30-Chrome-Permission-Flaw:Extensions-Can-Remotely-Monitor-User-Activity.md b/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/2017-05-30-Chrome-Permission-Flaw:Extensions-Can-Remotely-Monitor-User-Activity.md
deleted file mode 100644
index 08345ac..0000000
--- a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/2017-05-30-Chrome-Permission-Flaw:Extensions-Can-Remotely-Monitor-User-Activity.md
+++ /dev/null
@@ -1,91 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Chrome Permission Flaw: Extensions Can Remotely Monitor User Activity'
-date: 2017-05-30
-featuredpost: false
-description: >-
- Chrome is a popular browser, with a number of extensions. But one flaw in their permission grants extensions access to your webcam without your knowledge.
-keywords:
-- chrome bug
-- chrome extension flaw
-- chrome extension bug
-link: /chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication
-category:
-- Development
-tags:
-- chrome bug
-- chrome extension
-- chrome flaw
-author: Punit Gupta
----
-
-Chrome is one of the most powerful web browsers (if not the most powerful web browser). With its huge marketplace of extensions and apps, it’s more like a platform and has fuelled the creation of ChromiumOS. The Chrome APIs have played a major role in fueling this massive growth. From extensions like AdBlockPlus, that block pestering ads to Grammerly, that help fix grammatical issues in the text we type, numerous utilities have become an integral part of our life.
-
-
-### TL;DR
-
-A Chrome extension can manage permissions for itself and other extensions. This allows for extensions to grant itself audio/video access, monitor keyboard inputs, access you browser history and even access your camera and mic.
-
-All this without showing the red dot in tabs, quite unlike websites access your webcam.
-
-Here’s a video showing the Permission Flaw:
-
-
-
-
-
-
-
-## Evolution of Malwares
-According to chrome “Malware is any software or mobile application specifically designed to harm a computer, a mobile device, the software it’s running, or its users. Malware exhibits malicious behavior that can include installing software without user consent and installing harmful software such as viruses.”
-
-
-
-Have you ever seen this?
-
-
-Malwares were initially OS-specific (like Windows only or Mac only). Then they started becoming application-specific, like Macro viruses for Word, Excel and other business applications. Both these type of malwares are easily detectable by Anti-virus softwares.
-
-
-
-Recently, new kind of malwares are being developed which are embedded in basic data files. One such example is specially crafted [Subtitle files for VLC Media Player](http://blog.checkpoint.com/2017/05/23/hacked-in-translation/), Kodi and Popcorn Time, which go undetected and upon being used in the mentioned media player softwares, can initiate remote tunnels to a malicious server giving full access of the system.
-
-The next and even more advanced kind of malwares come in the form of Chrome and Firefox extensions. Initially, these extensions could be developed in C/C++ along with JavaScript using NPAPI. This allowed the extensions to interact with the OS and they could potentially create and modify files on the system.
-
-Ever wondered why the extension for Internet Download Manager was never installed from Chrome Webstore or Mozilla Add-ons repository? It wouldn’t have passed the validation checks put in place by these repositories. Towards the end of 2014, Chrome phased out the support for the NPAPI (it had been there since 1995) and later by the end of 2016, Firefox made a similar decision after adding some corresponding features in their core API platform.
-
-Now the extensions can only be written in JavaScript and for the extension to be able to access some critical APIs, they need to be installed from the webstore. This check was made mandatory so that the Chromium Team is aware of what extensions use those critical APIs.
-
-Enter HTML5 and the PeerConnection API. HTML5 is not just the next version of HTML, but it opened the doors for a whole new user experience. It brought in native support for playing audio and video files, which meant that there was no longer the need to install QuickTime, VLC or Flash Player plugins to play such content. We have used these functionalities to access camera, microphone access to interact with the browser, in many of [our projects](/works). Last year even YouTube made HTML5 as the default video player instead of the Flash player used earlier.
-
-With all the good happening, one would obviously wonder, “So what went wrong?”.
-
-
-## Chrome contentSettings pattern-matching Bug
-The answer to this lies in the ever-growing power of Chrome APIs. As of now, a chrome extension can inject scripts in tabs, read the cookies, create desktop notifications, and convert text to speech and read it out for you. Obviously, when installing any extension using these APIs, certain permissions are asked for and only upon being granted by the user are they installed. But there is one API, ‘contentSettings’ which can potentially grant full access to a chrome extension to modify permissions for any website.
-
-According to Chrome [documentation](https://developer.chrome.com/extensions/contentSettings):
-
-> Use the chrome.contentSettings API to change settings that control whether websites can use features such as cookies, JavaScript, and plugins. More generally speaking, content settings allow you to customise Chrome’s behaviour on a per-site basis instead of globally.
-
-The following permissions are controlled by contentSettings API – Cookies, Location, Camera, Microphone, Notifications, JavaScript, Flash, Images, Popups and triggering Automatic Downloads.
-
-
-
-Upon installing an extension with ‘contentSettings’ permission, the following popup is raised:
-
-
-
-These popups are taken as seriously as is the ‘license agreement’ before installing VLC Media Player or the list of ‘permissions’ before installing Facebook Messenger. This notice can (and will) easily be overlooked. Due to a bug in the chrome URL patterns for extensions, a chrome extension can manage permissions __for itself as well as other extensions__ also. A simple extension can be written to grant itself audio/video access permissions, listen to your conversations, monitor the keyboard inputs, access your browser history and even look at you through the webcam. Unlike websites, it does not show the red dot that appears for tabs, since extension runs as a background process in Chrome.
-
-
-
-
-PS: I had reported the issue to Chromium Team on 1st Jan, 2017. It was accepted as Security Bug and first PR was created 3 months later in March. Since then, there are only talks and no clear solution has been arrived at yet. At the time of writing, its 5 months now and the issue has been jumped from v56 to v57 and then to v58. The purpose of making it public is for the Chromium team to take it seriously and prioritize it in the upcoming version.
-
diff --git a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screen-Shot-2013-11-05-at-20.28.41.png b/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screen-Shot-2013-11-05-at-20.28.41.png
deleted file mode 100644
index 0e1953f..0000000
Binary files a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screen-Shot-2013-11-05-at-20.28.41.png and /dev/null differ
diff --git a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screenshot-from-2017-01-01-12-17-38.png b/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screenshot-from-2017-01-01-12-17-38.png
deleted file mode 100644
index e0371dd..0000000
Binary files a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screenshot-from-2017-01-01-12-17-38.png and /dev/null differ
diff --git a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screenshot-from-2017-05-30-21-22-13.png b/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screenshot-from-2017-05-30-21-22-13.png
deleted file mode 100644
index 04f52ab..0000000
Binary files a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/Screenshot-from-2017-05-30-21-22-13.png and /dev/null differ
diff --git a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/malware.png b/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/malware.png
deleted file mode 100644
index c79adc5..0000000
Binary files a/posts/chrome-permission-flaw-allows-extensions-to-remotely-monitor-user-activity-without-indication/images/malware.png and /dev/null differ
diff --git a/posts/completing-react-as-a-mvc-part-1-models/completing-react-as-a-mvc-part-1-models.md b/posts/completing-react-as-a-mvc-part-1-models/completing-react-as-a-mvc-part-1-models.md
deleted file mode 100644
index bdb6a19..0000000
--- a/posts/completing-react-as-a-mvc-part-1-models/completing-react-as-a-mvc-part-1-models.md
+++ /dev/null
@@ -1,148 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Completing React as a MVC – Part 1 – Models'
-date: 2016-06-18
-featuredpost: false
-description: >-
- In this article, you will learn about MVC using ReactJS. React is a JavaScript library for creating user interfaces. Hire ReactJS Developers from Codebrahma
-keywords:
-- reactjs developers
-- react js development company
-- hire react developers
-- hire reactjs developers
-- hire reactjs development company
-- react as mvc
-author: ARAVINDAN
-link: /completing-react-as-a-mvc-part-1-models
-category:
-- Development
-tags:
-- flux
-- React
-- React js development company
-- redux
----
-
-Building great front-end applications is an issue that has plagued the development community for some time now. React is Facebook's remedy to this problem. [React.js][1] is an open-source javascript library that provides a view for the data rendered as HTML. This article shall give you a glimpse of the Various Architectures to use in React for building great apps.
-
-React has enjoyed a warm reception amongst the developers. A lot of developers have started adopting a number of [Best practices in React][2] to improve their webapps. React aids the process of building front end applications by making the UI consistent and increasing the efficiency of the rendering process. It is basically the V in the MVC architecture.
-
-## Various Architectures to use in React
-
-Though a number of benefits are credited to React, building large applications can be quite tedious with React. It does not handle the structure of your webapp. This is where the Flux protocol comes into picture.
-
-### Flux
-
-Facebook's official site describes Flux as follows:
-
-" It is the application architecture that Facebook uses for building client-side web applications"
-
-Flux is an architecture used to implement uni-directional workflow. Uni-directional workflow is an idea developed by Facebook to organize the web application by ensuring that the data flows in one direction throughout the application.
-
-Flux is constituted by four major components:
-
-* Actions
-* Dispatcher
-* Stores
-* Controller Views
-
-Let us look at these components in detail
-
-### Dispatcher
-
-Dispatcher is basically the central hub of the entire process that takes place. It plays the typical managerial role of receiving the actions and dispatching these actions and data to registered callbacks. The dispatcher has the ability to broadcast the payload to all the registered callbacks and call them back in a specific order. There is only one global dispatcher and it acts as the central hub.
-
-#### A simple example for Dispactcher
-```js
-var myDispatcher = newDispatcher();
-
-
-ADD PAYEE
-addPayee: function(event)
-{
- myDispatcher.dispatch(
- {
- action : 'add-payee';
- payeeDetails:
- {
- accountNumber : '12345678';
- name : 'Ajay';
- iifsc code : 'kkf1234';
- }
- });
-}
-```
-
-In the above program. We are creating a new button functionality in the webapp. When the button is clicked a new action is dispatched by the view with action name and new item data.
-
-### Store:
-
-The store is a micro manager that manages the data, data retrieval methods and dispatcher callbacks. Essentially stores in flux is used to manage the application state of a particular domain within your application. The store is a singleton. A singleton,as you know is a design pattern that restricts the instantiation of a class to a single object. Thus you cannot declare with a 'new'. There is only one instance of a store across you application.
-
-Some of the salient features about store is:
-
-* A store is not a model. There are models inside a store.
-* The actions dispatched do not update data. The only thing in your application that has the ability to update data is the store.
-* A store represents a single domain in your application.
-* In case of large applications there might be multiple domains where you might need several store for each domain. In case of small applications you will need only one store.
-
-#### A simple example of Store
-
-```jsx
-var payeeList {
-
- payees : []
-};
-myDispatcher.register(function(Details) {
- payeeList.pauees.push(details.add.payee)
-});
-```
-
-### Controller Views
-
-These are React components that listen to the change events and retrieve the application state from the store. The retrieved data is then passed down to the child components through props.
-
-![various architectures to use in React_Controller view][3]
-
-### To sum up
-
-Though you can build applications on React without the support of Flux, the use of flux makes your application much more elegant and structured. Thus we highly recommend the use of flux in your applications. But the overuse of flux also leads to some problems as we discussed in React.js Best practices of 2016. This is an adversary that developers should be weary of.
-
-## Redux
-
-The official documents define Redux as the "**a predictable state container for JavaScript apps". ** The flux architecture is a concept with many desirable characteristics. Redux is a high performing implementation of the important concept of flux. The most important concept being uni-directional work flow. But Redux only implements some of the concepts of Flux and not all.
-
-Some fundamental differences in Redux and a complete implementation of Flux is:
-
-* There is not separate dispatcher, the store listens directly for actions and uses a reducer function to return a new app state every time an action is dispatched
-* The app state is immutable
-* The entire application's state is held in one place
-
-To understand the implications Redux. Let us consider the app state to be a tree with child and root nodes. A change to be made in the child node, cannot be made directly as the state is immutable. A replica of the target child node is created in which the necessary changes are made. But a logical flaw arises in this situation. How can two different child nodes be created from the same parent node? A replica of the corresponding parent node is also created in order to resolve this issue. The newly created nodes are then connected to the other existing unchanged nodes.
-
-### How does it work?
-
-The working of Redux is made astonishingly simple by the use of the Reducer function. The reducer is a derivative of the JavaScript reduce function. It accepts two inputs An action and next state.
-
-By definition Reducers are designed to be pure functions ie the output of the function remains constant for the same input irrespective of the number of times you pass the input. The sole functionality of the reducer function is to accept the current state,perform the prescribed action and then returns the desired next state.
-
-The reducers do not store state or mutate state. They just pass and return the state.
-
-To sum up Redux is an implementation of Flux that is managed to get a lot of things right thereby gathering the attention of the web development community. Inspite of being relatively new Redux has already proved effective in its functionality. Some of the most important high lights of Redux are:
-
-* The current state of the app can be re-produced at any time
-* The complex essentially boils down to a starting state and a sequence of actions
-* You can auto update the view and reducer components without reloading the page
-
-## The Culmination
-
-Though there are number of Architectures available today that work quite well with React, the most popular ones are Flux and Redux. Here we have discussed the fundamentals of both these architectures. After reading this article you can confidently claim to have quite an insight in the Various Architectures to use in React. Now you may take the next step in your React journey. If you have any other points to be added on these architectures or any other points to be discussed on React add them in the comments section.
-
-**Looking for [React JS development company ?][4]**
-
-[1]: https://facebook.github.io/react/
-[2]: /react-js-best-practices-2016/
-[3]: ./images/Controller-views.png
-[4]: /react-js-development/
-
-
\ No newline at end of file
diff --git a/posts/completing-react-as-a-mvc-part-1-models/images/Controller-views.png b/posts/completing-react-as-a-mvc-part-1-models/images/Controller-views.png
deleted file mode 100644
index 3546e59..0000000
Binary files a/posts/completing-react-as-a-mvc-part-1-models/images/Controller-views.png and /dev/null differ
diff --git a/posts/create-lossless-scalable-icons-react-native-application/2018-05-10-How-to-create-Lossless-Scalable-Icons-in-a-React-Native-application.md b/posts/create-lossless-scalable-icons-react-native-application/2018-05-10-How-to-create-Lossless-Scalable-Icons-in-a-React-Native-application.md
deleted file mode 100644
index 2f2d7ea..0000000
--- a/posts/create-lossless-scalable-icons-react-native-application/2018-05-10-How-to-create-Lossless-Scalable-Icons-in-a-React-Native-application.md
+++ /dev/null
@@ -1,140 +0,0 @@
----
-templateKey: "blog-post"
-title: "How to create Lossless scalable icons in a react native application"
-date: 2019-05-10
-featuredpost: false
-description: >-
- Developing iOS and Android applications by React Native is growing day by day. Stunning UI can be easily achieved by the right combination of images and styled content like icons / texts. SVG is the best available option for rendering
-author: Arivanandan
-link: /create-lossless-scalable-icons-react-native-application
-category:
-- Tutorial
-tags:
-- react-native
-- image-manipulation
-- performance
-keywords:
-- react native
----
-
-Developing iOS and Android applications by React Native is growing day by day. Stunning UI can be easily achieved by the right combination of images and styled content like icons / texts. SVG is the best available option for rendering an icon in a React Native application development process. Unfortunately React Native does not natively support SVG rendering. Although there are a couple of libraries out there that do it, turning icons into fonts makes it much simpler to display clean-cut icons with consistent dimensions with dynamic styling (including colors / size etc…)
-
-Let’s start off with getting an SVG image to iconize. I shall be using the following:
-
-- [Inkscape](https://inkscape.org/)
-- [IcoMoon](https://icomoon.io/app)
-- [React Native Vector Icons](https://github.com/oblador/react-native-vector-icons)
-- [React Native Linear Gradient](https://github.com/react-native-community/react-native-linear-gradient)
-
-If you had tried any of the tools out there that make fonts out of SVGs such as Fontello or IcoMoon, you might have had problems with some SVG images. For fonts, we need SVGs that do not have strokes in them. They only take _fills_.
-
-
-
-The end result would be this icon picture-perfect in whatever size / color we might need which is easily controllable by our React Native Code.
-
-## Getting the Icon
-
-In this case we are using InkScape since it’s available across Mac, Windows and Linux for free.
-
-1. First get your SVG image. If you have designs in sketch it can easily be exported. Also, there are options in Sketch to export only outlines, that might make short work of the Strokes that we do not want in our images. There are a bunch of services that convert JPEG, PNG and other formats into SVG.
-2. One thing to note is multi-colored icons aren’t really a thing. So, if I was exporting the above icon from Sketch, we would simply export the inner most lines and circles and leave the circular lavender background. If that proves difficult, extract our icon using InkScape.
-3. Open up the SVG in InkScape and select the second option in the left pane Edit Paths by Node (F2). Select all the paths you need by holding down shift and left clicking them. If the lines happen to be invisible for some reason simply hovering over the area where they are would show outlines. Now cut out your selection. Let’s remove what was left out. Select everything else on screen, choose the Selection tool (first on the left pane / F1) and delete. Paste the selection that you cut out earlier.
-
-
-
-Right click and Group them.
-
-You can play around with this a little bit to see what’s happening. Basically, if you set Stroke color and see your image filling up like so, then it isn’t ready for conversion into a font. `Shift + Ctrl + F` brings it up.
-
-
-
-Select your image and click on the Path menu and choose Stroke to Path. After that you can try to remove colors for Stroke and choose a color for Fill and see if the icons color up with just the Fill color set.
-
-
-
-In this case it was not working. So to make it work, get into the XML editor which is brought up with `Shift + Ctrl + X`. Select each of the paths that have Stroke on them and convert them to Paths by pressing `Ctrl + Alt + C` or going into the menu.
-
-
-
-The colors that you got from Strokes, you get them from Fills now. The SVG is ready to go into our font!
-
-Next up, we have to export / save this image. Select the image go to Document Properties in the File menu or press `Ctrl + Shift + D`. The option we’re looking for here is Resize Page to Content. Click on it and select Resize page to drawing or selection. Then simply save as a Plain SVG.
-
----
-
-## Generating the Font
-
-Generating the fonts itself is pretty straightforward at this point. You simply go to [IcoMoon’s site](https://icomoon.io/app/) and Import your icons and Generate Font. Download it with the Download option at the bottom right. You get a couple of files. The files of significance to us are the selection.json and the iconmoon.ttf files. There’s a bit of work left to bring the icons into your project.
-
-Put the .json and the .ttf files into your assets folder. For Android, you simply want to move it to android/app/src/main/assets/fonts and you are done. For iOS, you have to import the files into your project from XCode.
-
- Add the font file to info.plist.
-
-
- Make sure it shows up in Build Phases under Copy Bundle Resources. Create an entry and point it to your font location.
-
-
-If you think you didn’t get it right check out [react-native-vector-icons](https://github.com/oblador/react-native-vector-icons#installation)’ git for a more detailed explanation.
-
-Don’t forget to re-build after it’s all done.
-
----
-
-## The Icon component
-
-Time to build our icon component!
-
-```jsx
-import React from "react"
-import { StyleSheet, View } from "react-native"
-import { createIconSetFromIcoMoon } from "react-native-vector-icons"
-
-import icoMoonConfig from "#/assets/selection.json"
-
-const Icon = createIconSetFromIcoMoon(icoMoonConfig)
-
-const styles = StyleSheet.create({
- backdrop: {
- alignItems: "center",
- justifyContent: "center",
- },
-})
-
-const RadIcon = ({ backdrop, color, name, size, style }) => {
- if (!name) return null
-
- const IconComponent = (
-
- )
-
- return backdrop ? (
-
- {IconComponent}
-
- ) : (
- IconComponent
- )
-}
-```
-
-The code above does simple as well as icons with a backdrop. Doing gradients is just as simple. All you have to do is replace the View component with the imported LinearGradient component and pass on some colors. It can also easily be customized to add shadows other fancy adornments.
-
-
-
-This technique can also be employed in React. Instead of importing images and hassling with the dimensions and editing for colors, this is so much easier.
diff --git a/posts/create-lossless-scalable-icons-react-native-application/images/icons.png b/posts/create-lossless-scalable-icons-react-native-application/images/icons.png
deleted file mode 100644
index cd1645f..0000000
Binary files a/posts/create-lossless-scalable-icons-react-native-application/images/icons.png and /dev/null differ
diff --git a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development-services-2.png b/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development-services-2.png
deleted file mode 100644
index 605e40b..0000000
Binary files a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development-services-2.png and /dev/null differ
diff --git a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development-services.png b/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development-services.png
deleted file mode 100644
index 14811fd..0000000
Binary files a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development-services.png and /dev/null differ
diff --git a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development.png b/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development.png
deleted file mode 100644
index 1d97ed5..0000000
Binary files a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-app-development.png and /dev/null differ
diff --git a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-application-development.png b/posts/create-lossless-scalable-icons-react-native-application/images/react-native-application-development.png
deleted file mode 100644
index 63f3135..0000000
Binary files a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-application-development.png and /dev/null differ
diff --git a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons-2.png b/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons-2.png
deleted file mode 100644
index 197cfd4..0000000
Binary files a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons-2.png and /dev/null differ
diff --git a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons-3.png b/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons-3.png
deleted file mode 100644
index ab645dc..0000000
Binary files a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons-3.png and /dev/null differ
diff --git a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons.png b/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons.png
deleted file mode 100644
index 0b1a34a..0000000
Binary files a/posts/create-lossless-scalable-icons-react-native-application/images/react-native-vector-icons.png and /dev/null differ
diff --git a/posts/deploy-react-application-depth-overview-various-options-deploy/2017-10-02-How-to-deploy-a-React-application-An-i-depth-overview-of-various-options-to-deploy.md b/posts/deploy-react-application-depth-overview-various-options-deploy/2017-10-02-How-to-deploy-a-React-application-An-i-depth-overview-of-various-options-to-deploy.md
deleted file mode 100644
index f8e1797..0000000
--- a/posts/deploy-react-application-depth-overview-various-options-deploy/2017-10-02-How-to-deploy-a-React-application-An-i-depth-overview-of-various-options-to-deploy.md
+++ /dev/null
@@ -1,299 +0,0 @@
----
-templateKey: "blog-post"
-title: "How to deploy a React application. An in depth overview of various options to deploy."
-date: 2017-10-02
-featuredpost: false
-description: >-
- There are a variety of ways to deploy a production ready React application. How to bundle, optimize and deploy a React application has been discussed.
-keywords:
-- Deploy react application
-- deployment
-- production ready
-link: /deploy-react-application-depth-overview-various-options-deploy
-category:
-- Tutorial
-author: Prasanna
-tags:
-- react js
-- reactjs
----
-
-A lot of front end application development companies are using React for developing applications. Deploying an application refers to making the application accessible to the world through internet. We will discuss about the various ways to deploy a React application, the platforms to deploy and test the applications. There are a lot of articles describing how to deploy a React application. We will mention about each steps involved in detail as per our experience and various options to how to do it. This article is written assuming webpack as the module bundler to generate the bundled assets for a client side deployment.
-
-## What does deployment refers to ? (For Beginners)
-
-Once you create your React application you want to share it to the whole world. You wouldn’t want to tell every single user of the application to download the repository and ask them to run locally. So to share it and make it open to the entire world we deploy the application in the internet. Also there would be frequent version updates to the application (like bugfixes, feature addition…) that has to happen without informing the end users.
-
-
-
-## What should be the major focus of a deployed application ?
-
-The major focus of a deployed front end application (in our case it is the React application) is to make the application load faster by minimizing the overhead. This can be achieved by reducing the bundled Javascript files and optimizing the static assets. Imagine downloading 15 MB files for every single network request in our application. The user will feel that the application will be too difficult to use. There are many ways to improve the speed of the application and we have described in upcoming sections.
-
-## How deployment is different from development ?
-
-We typically define “production environment” and “development environment” to actually distinguish between the deployment and development phase.
-
-The main focus in development phase is to make the development process easier by integrating many tools. For example a better stack trace can help in identifying the error easily. Also we can use loggers to identify the problem. We don’t use this in production environment since this might consume more memory and make the app slower. The whole idea is there are can be a lot of optimisations present in a deployed app.
-
-## How does deployment works ?
-
-In a typical client side deployment we generate files which are actually served over the network.
-
-
-
-In the example you could see that all the necessary files (Javascript / static assets ) are fetched over the network.
-Typically during development using webpack dev server, the server actually stores these files in memory and serves during development. So during deployment we get the following files generated
-
-1. A root html file
-2. Single or multiple Javascript files [Including styling]
-3. Static assets like images / svgs
-
-The html file links the javascript file(s) based on which the application loads. This is a way Single Page applications work. So the first step of deployment is actually creating these files.
-
-## Optimizations in creating a bundle
-
-We cannot do much changes to html file since it will have a single JS file linked to it. Even the size of it will be < 1Kb. Mostly we target the Javascript files to optimize. So if you ask me what is the proper size of Javascript bundles which will make the application faster. The answer is there is no such magical number. As you increase the size of bundled JS file, you app will be getting slower. But optimizations like splitting bundles and caching can still be performed to make it served faster. For exact numbers, lets look at how much the popular React web applications fetch initially. Open your devtools and hit the below websites.
-
-Airbnb : 3.1 MB
-
-Bitbucket: 1 MB
-
-Clashofclans: 3.3MB
-
-Most of these applications use better optimisation techniques to reduce the overhead during initial fetch. For example Facebook / Netflix fetches minimal data (Around 1 MB) when it loads for the first time. Based on the further user interactions, the application will be fetching additional files. So if you feel that your application is slow and have a large bundle size even after performing optimisation, the best technique is to lazy load the modules and provide only when required.
-
-Lets look at the various optimisation techniques one by one. **Remember that you don’t need all of these**. These are just the best available options. You could choose the right ones suitable for your project. We, at [Codebrahma](/) typically handpick the appropriate optimisations for the appropriate use case.
-
-**Setting the right node environment**
-
-Even though React has good system implemented for warnings and errors, you don’t need it for a deployed application. (It is really helpful in development though). So by setting Node Environment to production, we explicitly tell React to ignore displaying warnings. Also the libraries which you use (not all) will avoid the development related code.
-
-If you have seen React’s source code you would have found lot of conditional checks(process.env.NODE_ENV != ‘production’). Most of these are for development purposes. So to avoid it, we can use definePlugin in webpack like this.
-
-```js
-plugins: [
- new webpack.DefinePlugin({
- "process.env": {
- NODE_ENV: JSON.stringify("production"),
- },
- }),
-]
-```
-
-This will avoid all the code which is actually meant for development.
-
-**Minification**
-
-Minification strips a code file of all data that isn’t required in order for the file to be executed. Generally readability is not a concern for the deployed code running on the browser. By Minifying, we compresses the file size by removing the spaces, new lines thereby making the code ugly. Uglify also joins sentences using comma, removes dead code and removes console logs. it also simplifies conditional statements (if), Boolean operations, constants, function declarations etc.
-
-We can use Uglify JS plugin to minify your code. Even though there are a lot of configurations, you can easily identify which one works the best for you.
-
-```js
-plugins: [
- new webpack.optimize.UglifyJsPlugin({
- output: {
- comments: false,
- },
- mangle: true,
- sourcemap: false,
- debug: true,
- minimize: true,
- compress: {
- // set what to include and what to exclude
- warnings: false,
- screw_ie8: true,
- conditionals: true,
- unused: true,
- comparisons: true,
- sequences: true,
- dead_code: true,
- evaluate: true,
- if_return: true,
- join_vars: true,
- },
- }),
-]
-```
-
-__Removing dead code using Tree Shaking:__
-
-Tree shaking is a technique by which you can remove the non imported code. This works only with ES2015 module import/export. By using this method we can remove code from libraries which are not imported. So how it works ? During bundle creation, Webpack grabs all of your modules and puts them into a single file but removes the exportfrom code that’s not being imported anywhere.
-
-Even though this is a good technique majority of the libraries don’t publish their code in ES2015. Due to this reason this might not yield results as you expect.
-
-__Dedupe-plugin__
-
-Deduplication as the name suggests, prevents duplicate files being included in the compiled code by creating copies of the duplciate functions instead of redefining them. So in the runtime it includes only one copy of each function thereby removing the duplicates.
-
-```js
-new webpack.optimize.DedupePlugin()
-```
-__Ignore - plugin__
-
-Using this plugin we can ignore modules for import matching the following regular expressions.
-
-```js
-new webpack.IgnorePlugin(requestRegExp, [contextRegExp])
-```
-
-For example, in moment library all locales are bundled together with the core library . You can use the IgnorePlugin to stop any locale being bundled with moment:
-
-```js
-new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
-```
-
-__OccurrenceOrderPlugin__
-
-Assign the module and chunk ids by occurrence count. Ids that are used often get lower (shorter) ids. This make ids predictable, reduces total file size and is recommended.
-
-```js
-new webpack.optimize.OccurrenceOrderPlugin(preferEntry)
-```
-
-__Lazy loading and Dynamic imports__
-
-Webpack provides a great platform to achieve dynamic imports seamlessly. Try opening facebook.com and netflix.com and try using some of their features. You could see that there will be multiple network requests to fetch the JS files. These files will be fetched only when needed. A simple example would be
-
-
-
-Webpack allows you to import a library only when you actually use it. For example, moment is a heavy library which might not be used everywhere. If there is a Component where you used moment and that component is rendered only in one route, you can dynamically import it like this
-
-```js
-import(‘moment’).then() // This will return a promise
-```
-
-We can use moment only in the case when it is actually required.
-
-So if you can identify modules based on the usage, we can reduce bundle size significantly for most of the cases using this plugin.
-
-### CommonChunk plugin
-
-Most probably you won’t be having multiple entry points in your configuration for webpack, I want to discuss this to show the power of commonChunksPlugin. If you are having a multipage app you can easily bundle with multiple entry points, generate multiple chunks and load them on demand.
-
-```jsx
-module.exports = {
- entry: {
- index: "./index.js",
- dashboard: "./dashboard.js",
- },
- output: {
- filename: "[name].entry.chunk.js",
- },
-}
-```
-
-This will generate multiple entry chunks: index.entry.chunk.js and dashboard.entry.chunk.js.
-
-If your entry chunks have some modules in common then CommonsChunkPlugin identifies common modules and put them into a commons chunk. You need to add two script tags to your page, one for the commons chunk and one for the entry chunk.
-
-```jsx
-var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin")
-module.exports = {
- entry: {
- index: "./index.js",
- dashboard: "./dashboard.js",
- },
- output: {
- filename: "[name].entry.chunk.js",
- },
- plugins: [new CommonsChunkPlugin("commons.chunk.js")],
-}
-```
-
-This will generate all the above JS files plus one commons.chunk.js. First load commons.chunk.js and then load all the other files in the html to make it work.
-
-Now comes the question, how to use it with react since it will be a single page application. We can actually create multiple entries with one for the vendor JS file (All your libraries) and the other for the app JS file. Browser generally caches JS files and return the same file from previous request if the name is not changed. Mostly it happens to be the same libraries we will be using once deployed for our application updates. So we can actually use hash IDs of the build to change the name for app.bundle.js dynamically, thereby caching the vendor files by which you can avoid re fetch during new version releases.
-
-__ModuleConcatenation Plugin__
-
-In the past, one of webpack’s trade-offs was that each module in your bundle would be wrapped in individual function closures. These wrapper functions made it slower for your JavaScript to execute in the browser. In comparison, tools like Closure Compiler and RollupJS ‘hoist’ or concatenate the scope of all your modules into one closure and allow for your code to have a faster execution time in the browser.
-
-This plugin will enable the same concatenation behavior in webpack.
-
-__Compression-webpack-plugin:__
-
-This is by far the most important plugin. Once you compress with GZIP your bundle size reduces drastically. I will let you down to google to understand what exactly this plugin does
-
-```jsx
-module.exports = {
- plugins: [new CompressionPlugin()],
-}
-```
-
-Once you build your files using these plugins you have really a lot of options to deploy your application. To deploy your application to internet and make it available to the entire world all you need is a server to handle response and a facility to host the server. There are various options to do this.
-
-Read their documentation to understand the pricing and limits before using their deployment facility. All I wanted to discuss is the procedure to deploy.
-
-### AWS S3
-
-Pricing: Free for one year using free tier.
-
-Amazon S3 is object storage built to store and retrieve any amount of data from anywhere. With S3 we can actually store HTML, JS and CSS files thereby serving it as a static website. All you get is a public folder with a bucket (each bucket can be used as a different static webpage). For this you need to create a bucket. With AWS you can get 11 months of free tier with which you can create one.
-
-### How to host
-
-
-
-
-
- For Index Document, type the name of the index html file, which is typically named index.html. When you configure a bucket for website hosting, you must specify an index document. Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders.
-
-
- (Optional) For 4XX class errors, you can optionally provide your own custom error document that provides additional guidance for your users. For Error Document, type the name of the file that contains the custom error document. If an error occurs, Amazon S3 returns an HTML error document. For more information, see Custom Error Document Support in the Amazon Simple Storage.
-
-
- (Optional) If you want to specify advanced redirection rules, in the Edit redirection rules text area, use XML to describe the rules. For example, you can conditionally route requests according to specific object key names or prefixes in the request. You can have an advanced redirect rules from here.
-
-
- You can also configure cloudfront for region based delivery and caching.
-
-
-
-If you face any react router issue with S3 we can use advanced Redirection rule to solve it. For example, if you hit the nested route as declared in the React router you won’t be getting the results. Since in static deployments it first looks for the folder based on the route. To avoid this you can write advanced redirection rule for 404 and use Hash URL based on this [stackoverflow](https://stackoverflow.com/questions/16267339/s3-static-website-hosting-route-all-paths-to-index-html) thread.
-
-### AWS EC2 or digital ocean:
-
-AWS : Free tier for 1 year. Beyond that chargable (Approx > 6 USD / month)
-
-EC2: > 5 USD per month depending upon config.
-
-This offers instance of your preferred operating system (from ubuntu to Windows) and let you deploy your application. You get a IP address by which you can ssh and access the instance. The steps involved to deploy are
-
-1. SSH into the machine
-2. clone your github repository and pull the latest code
-3. npm install
-4. Create a simple Node server to serve your files
-5. Use process manager like PM2 to handle server errors and restarts.
-6. We can use services like nginx for load balancer and proxying. To make react router working with nested routes we can set up nginx config to redirect to root if we get any error.
-
-Since this is a static deployment, you can use any server of your wish. We are using Node since we are comfortable with Javascript. This is exactly similar to serving from your local machine. Instead we do this on a remote machine. This is one of the best and commonly used method to deploy. The advantages are the freedom to choose our tools, advanced network security and better options to deploy.
-
-### Heroku.
-
-Pricing: Has a free account for which you can create 5 applications. We can get dynos as low as 7 USD per month.
-
-Heroku is a popular Platform as a service that enable developers to run build and automate applications over the web. The major advantage with heroku is that if you follow their set of instructions it will automatically identify which type of app and deploy on its own. If we use a Node server similar to the one we used at AWS EC2, then we can follow this tutorial to deploy our application. The typical process includes
-
-1. Create Heroku account
-2. Create an express app to handle routes
-3. Create a heroku app.
-4. Add remote url for heroku
-5. Push to heroku master
-6. App will be auto deployed
-
-__Bonus__
-
-__Production Logging tools.__
-
-There are certain tools which helps us to monitor deployed applications. For example if there is a bug in a deployed verion and if we log it we can use their stack trace to easily solve it.
-
-__Sentry:__
-
-Using Sentry we can log all errors and maintain its stack trace. All we need to include their CDN / source code with our account credentials on our JS file. We need to push to sentry at all possible error locations (We can use try catch pattern at async fetches or any other potential locations).
-
-
-
-__Log Rocket__
-
-Log Rocket is a latest tool by which we can even replay redux states when a bug occurs. It is gaining its popularity of late.
diff --git a/posts/deploy-react-application-depth-overview-various-options-deploy/images/http-request.png b/posts/deploy-react-application-depth-overview-various-options-deploy/images/http-request.png
deleted file mode 100644
index fd815c5..0000000
Binary files a/posts/deploy-react-application-depth-overview-various-options-deploy/images/http-request.png and /dev/null differ
diff --git a/posts/deploy-react-application-depth-overview-various-options-deploy/images/lazy-loading.gif b/posts/deploy-react-application-depth-overview-various-options-deploy/images/lazy-loading.gif
deleted file mode 100644
index 8d9056f..0000000
Binary files a/posts/deploy-react-application-depth-overview-various-options-deploy/images/lazy-loading.gif and /dev/null differ
diff --git a/posts/deploy-react-application-depth-overview-various-options-deploy/images/production-optimisation-react.jpg b/posts/deploy-react-application-depth-overview-various-options-deploy/images/production-optimisation-react.jpg
deleted file mode 100644
index 1f2cdce..0000000
Binary files a/posts/deploy-react-application-depth-overview-various-options-deploy/images/production-optimisation-react.jpg and /dev/null differ
diff --git a/posts/deploy-react-application-depth-overview-various-options-deploy/images/sentry-error.jpg b/posts/deploy-react-application-depth-overview-various-options-deploy/images/sentry-error.jpg
deleted file mode 100644
index a6a1ad6..0000000
Binary files a/posts/deploy-react-application-depth-overview-various-options-deploy/images/sentry-error.jpg and /dev/null differ
diff --git a/posts/deploy-react-application-depth-overview-various-options-deploy/images/staticwebsitehosting20.png b/posts/deploy-react-application-depth-overview-various-options-deploy/images/staticwebsitehosting20.png
deleted file mode 100644
index 2643be3..0000000
Binary files a/posts/deploy-react-application-depth-overview-various-options-deploy/images/staticwebsitehosting20.png and /dev/null differ
diff --git a/posts/e-commerce-using-spree-commerce-build-online-store/2017-03-20-E-commerce:-Using-Spree-Commerce-To-Build-Your-Online-Store.md b/posts/e-commerce-using-spree-commerce-build-online-store/2017-03-20-E-commerce:-Using-Spree-Commerce-To-Build-Your-Online-Store.md
deleted file mode 100644
index 95dcea3..0000000
--- a/posts/e-commerce-using-spree-commerce-build-online-store/2017-03-20-E-commerce:-Using-Spree-Commerce-To-Build-Your-Online-Store.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-templateKey: "blog-post"
-title: "E-commerce: Using Spree Commerce To Build Your Online Store"
-date: 2017-03-20
-featuredpost: false
-description: >-
- Spree commerce is an open source e commerce software built on top Ruby on Rails. Should you choose Spree for your online store? Read on to learn why Spree ..
-author: Anand Narayan
-link: /e-commerce-using-spree-commerce-build-online-store
-category:
-- Business
-tags:
-- Rails Ecommerce Development
-- Ruby on Rails
-- spree commerce
----
-
-E commerce refers to a business or commercial transaction, that involves the transfer of information over the internet. For business that are already selling through a physical brick and mortar store, setting up an online store is becoming a natural extension. Most business now have websites wherein the users can browse through their product catalog, add items to their cart, pay and get the items delivered to their doorsteps. The advantages of having an e-commerce store are aplenty!
-
-Keeping with the e-commerce trend, a lot of out of box solutions to help businesses get online have emerged. Shopify, Magento, WordPress (with Woocommerce) are some of the bigger names in ecommerce. A relatively newer name on the block – Spree Commerce is fast gaining popularity as the go-to platform for bigger businesses looking to set up their e-commerce store. Here, we take a close look at what is Spree and how can it be used to get your online store up and running.
-
-
-
-## What is Spree Commerce
-
-Spree commerce is a full featured e-commerce platform built on top of Ruby on Rails framework. It’s completely open source, with a ‘use-as-you-deem-fit’ license. With over 700 active contributors to the project on GitHub, Spree is amongst the top 50 open source projects in the world. It’s growing popularity can also be gauged by the number of stores being powered by Spree – a staggering 45,000.
-
-## Why Use Spree
-
-Spree is fast gaining popularity. According to [Wikipedia](https://en.wikipedia.org/wiki/Spree_Commerce), it has been downloaded over 429k times as of January 2016. Some of the reasons behind Spree’s success are:
-
-**Flexibility**
-
-Compared to other open source e commerce solutions, Spree is way more flexible – giving developers the power to configure it as they want. This is particularly important for businesses that need to implement variety custom business logic to their ecommerce store. Complex taxations, specific shipping rules etc can be implemented rather easily with Spree. This is why a growing number of big businesses are looking towards Spree commerce.
-
-**Rapid Development**
-
-All the core functionalities of an e-commerce store come in-built with Spree. Inventory management, orders, product catalogs, promotions, shipment etc – are all available as modules and can be implemented on your e-commerce store with just a couple of lines of code. Third party extensions make almost every feature that an e commerce store could have, available without needing to be developed from scratch.
-
-**Scalability and Reliability**
-
-A community of over 700 contributors ensures that Spree is stable and reliable. In fact, Spree’s first stable release was in 2011, about 4 years after the first release. Choosing an open source software system can be a bit tricky as there’s no full-time, dedicated employees working on it. But if the open source project has a developer community as big as Spree’s, you can rest assured about the reliability.
-
-Built on Ruby on Rails, which itself has a one of the largest developer communities working on it, ensures that Spree has a robust framework. Full page caching and faster page indexing keep the page load times in check. Multiple industry standard scalability tests have attributed Spree as on of the easiest to scale e-commerce platforms. Spree is built to handle huge volumes of traffic, and does a wonderful job at it – quite unlike some of the other ecommerce solutions.
-
-**Design Ready**
-The admin panel as well as the storefront are responsive right out of the box. Spree is built around simplicity – and this reflects in the design. The admin panel looks way less overwhelming compared to some other ecommerce platforms. This is not because of lack of features but better, more streamlined organization of data.
-
-One rather small drawback is that Spree doesn’t offer a lot of themes for the storefront. The ones that are there are not much to look at. The good news is that since version 3.0, both the admin panel and the storefront implement the popular CSS framework – Bootstrap. This means that you can hire a front end engineer to customize your storefront as you want! Looking at some of the live Spree commerce projects will tell you that your Spree store’s designs are only limited by your imagination (or your developer/designer’s skills :))
-
-## Who Is Using Spree Commerce
-
-A lot of big brand have joined the Spree bandwagon. To name a few popular ones:
-
-1. [Bonobos](https://bonobos.com/) – The men’s apparel company uses Spree commerce for their ecommerce store.
- 
-
-2) [Urban Ladder](https://www.urbanladder.com/) – A popular furniture store based in India uses Spree.
- 
-
-3. [The Collective](https://codebrahma.com/thecollective) – India’s largest, luxury, multi-brand retail concept. Their web store is built on Spree commerce.
- 
-
-4) [Ditto](https://www.ditto.com/) – The eye wear company’s web store is powered by Spree commerce.
- 
-
-In conclusion, Spree commerce is a highly viable solution if you’re looking to set up your online store. Being an open source software, the only major financial implication is that of hiring a [spree commerce development company](https://codebrahma.com/spree-commerce-development/), apart from the usual hosting fee etc. We have worked extensively with Spree commerce and would highly recommend using it for your next ecommerce project!
diff --git a/posts/e-commerce-using-spree-commerce-build-online-store/images/Screen-Shot-2017-03-20-at-4.08.29-PM.png b/posts/e-commerce-using-spree-commerce-build-online-store/images/Screen-Shot-2017-03-20-at-4.08.29-PM.png
deleted file mode 100644
index dae3b67..0000000
Binary files a/posts/e-commerce-using-spree-commerce-build-online-store/images/Screen-Shot-2017-03-20-at-4.08.29-PM.png and /dev/null differ
diff --git a/posts/e-commerce-using-spree-commerce-build-online-store/images/Screen-Shot-2017-03-20-at-4.45.26-PM.png b/posts/e-commerce-using-spree-commerce-build-online-store/images/Screen-Shot-2017-03-20-at-4.45.26-PM.png
deleted file mode 100644
index 8ddde07..0000000
Binary files a/posts/e-commerce-using-spree-commerce-build-online-store/images/Screen-Shot-2017-03-20-at-4.45.26-PM.png and /dev/null differ
diff --git a/posts/e-commerce-using-spree-commerce-build-online-store/images/ditto.png b/posts/e-commerce-using-spree-commerce-build-online-store/images/ditto.png
deleted file mode 100644
index afb4c2a..0000000
Binary files a/posts/e-commerce-using-spree-commerce-build-online-store/images/ditto.png and /dev/null differ
diff --git a/posts/e-commerce-using-spree-commerce-build-online-store/images/spree-commerce.jpg b/posts/e-commerce-using-spree-commerce-build-online-store/images/spree-commerce.jpg
deleted file mode 100644
index d216b7b..0000000
Binary files a/posts/e-commerce-using-spree-commerce-build-online-store/images/spree-commerce.jpg and /dev/null differ
diff --git a/posts/e-commerce-using-spree-commerce-build-online-store/images/urbanladder.png b/posts/e-commerce-using-spree-commerce-build-online-store/images/urbanladder.png
deleted file mode 100644
index 08f341a..0000000
Binary files a/posts/e-commerce-using-spree-commerce-build-online-store/images/urbanladder.png and /dev/null differ
diff --git a/posts/ecommerce-run-online-store-like-pro/2017-03-29-ECOMMERCE:HOW-TO-RUN-AN-ONLINE-STORE-LIKE-A-PRO.md b/posts/ecommerce-run-online-store-like-pro/2017-03-29-ECOMMERCE:HOW-TO-RUN-AN-ONLINE-STORE-LIKE-A-PRO.md
deleted file mode 100644
index 7ca29b5..0000000
--- a/posts/ecommerce-run-online-store-like-pro/2017-03-29-ECOMMERCE:HOW-TO-RUN-AN-ONLINE-STORE-LIKE-A-PRO.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Ecommerce: How To Run An Online Store Like A Pro'
-date: 2017-03-29
-featuredpost: false
-description: >-
- If you're an ecommerce newbie - this article will tell you about the basics of setting up your online store and running it like a pro!
-keywords:
-- ecommerce development
-- ecommerce
-- running an ecommerce store
-author: Anand Narayan
-link: /ecommerce-run-online-store-like-pro
-category:
-- Business
-tags:
-- ecommerce development
-- Rails Ecommerce Devlopment
-- spree commerce
----
-
-E commerce is one of the biggest outcomes of the rapid technology advances over the past few years. Better & more secure payment gateways, powerful mobile browsers, advent of the internet – have all made ecommerce a mainstream industry. If you have a brick and mortar store – complementing it with an online store can instantly open up the world for you. But with all the noise surrounding ecommerce and the number of players in the market – it can get a bit difficult to carve an identity for yourself.
-
-In this article, we’ve dig into our combined years of experience working with and setting up ecommerce stores to present you 3 tips on ecommerce. They’ll help you run your store like a pro and dominate the online sales business!
-
-## 1. UI and UX of your e-commerce store
-The moment a potential customer lands on your website, they’ll make assumptions about your brand based on the design, look & feel and the functionality. That’s why is absolutely essential to ensure that your ecommerce website is designed keeping your customer’s experience in mind. A few components that you should pay special attention to:
-
-__Simple Menus__
-
-Keep the menu as simple as possible. Loading up the main menu with every available product will overwhelm the user.
-Spend time categorizing your products as neatly as possible and try not to have multi-level menus. Realize that every added option in the menu will increase the user’s time to make a decision. And more time a user takes to make a decision, less likely are they to complete the checkout.
-
-
-__Intuitive & contextual Filters__
-
-We’ve seen so many ecommerce stores implementing standardized filters that don’t apply to certain products. Ensure the filters are contextual to the category/product list.
-
-The longer the list of products in your catalog, the more important filters become.
-
-__Design__
-
-A study by VWO concluded that larger product images can increase your conversion rates by as much as 10%. Consider hiring a professional photographer to take high quality pictures of your entire catalog. Detailed product descriptions also contribute to conversion rates.
-
-__Mobile Optimized Website__
-
-This one’s a no brainer, but it’s surprising how so many overlook it. More and more users are accessing websites and completing orders from their phone. You don’t really need to build an app for your ecommerce store, but it’s imperative to have the website optimized for mobile.
-
-
-## 2. Setup A Great Referral System
-Referral marketing is one of the most popular and effective ways of growing your user base organically. A simple example of a referral system is when you reward a user with a discount on their purchase when they invite their friends and family. Certain types of referral systems in ecommerce reward both the advocate (your user who invites) and the referred party (user’s friend/family).
-
-Many ecommerce giants swear by the effectiveness of this strategy. Amazon has been using referral based user acquisition ever since they launched. Paypal’s monumental growth has been attributed to a referral system. They literally paid users to signup as well as invite their friends and family. This helped them grow at a rate of around 7-10% per day, growing their user base to a 100 million. Since then a lot of startups have used this to grow fast.
-
-Referral is like a word of mouth system and works on a deeper level as both the involved parties are monetarily rewarded. Consider setting up a referral system for your ecommerce store. If your value proposition is worthwhile – it might just bring you insane amounts of traffic and grow your business faster than you can handle!
-
-## 3. Up your Customer Service Game
-Zappos, the footwear giant is known for its exceptional customer service. They have an extremely loyal customer base even though their prices are not the lowest in the market. Infact, 75% of Zappos business comes from repeat customers. There are case studies published highlighting the part their customer service has made in making Zappos the largest footwear store in the world.
-
-Having a great customer service could really set you apart from your competition, especially if you’re fighting a lot of competition. And if your budgets are constrained and have no room for hiring call centers – consider getting a [chatbot for your ecommerce](/chatbots-for-businesses) store.
-
-Take a leaf from the Zappos playbook – consider upgrading your customer service to awesome levels, build a loyal audience and make a name for yourself in your segment!
-
-Setting up a proper e-commerce portal takes a bit of work. Using an out-of-the-box service like Shopify or WordPress (Woocommerce) can limit the flexibility you’d like. That’s why we suggest[ Spree commerce ](/spree-commerce-development)to our clients. It gives you all the flexibility you need, while ensuring rapid development thanks to the huge repository of ‘gems’.
-
-If you’re thinking about setting up an ecommerce store and want to understand how to go about it – [we’d be happy to help!](/contact)
\ No newline at end of file
diff --git a/posts/form-libraries-in-react/2017-08-21-Comparison-of-form-libraries-in-react.md b/posts/form-libraries-in-react/2017-08-21-Comparison-of-form-libraries-in-react.md
deleted file mode 100644
index 070378d..0000000
--- a/posts/form-libraries-in-react/2017-08-21-Comparison-of-form-libraries-in-react.md
+++ /dev/null
@@ -1,354 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Comparison of form libraries in react'
-date: 2017-08-21
-featuredpost: false
-description: >-
- Comparison of various form libraries in React JS. Comparison factors include Easiness in creating custom components, validations and error handling
-keywords:
-- redux form
-- forms in react
-- formsy
-- react js
-- reactjs
-author: Anushul Sahni
-link: /form-libraries-in-react
-category:
-- Development
----
-
-## Introduction
-With [React JS](https://facebook.github.io/react/) community on a journey to conquer the best front-end development Javascript framework, the easiness in handling HTML forms in React is one of the most important aspect. Talking about [forms in react](https://facebook.github.io/react/docs/forms.html), as default they have provided us with an option to create controlled and uncontrolled input components. But that does not provide us with a full fledged solution to have a complete and comprehensive module for handling everything related to forms such as
-Form Validation and error Handling, Handling form submissions, Easiness in creating custom components. We being one of the best [React JS development](/react-js-development) service company have a good experience with how to handle forms.
-
-Look at [how we create React Applications](/codebrahma-react-application) in a better way by abstracting these Form libraries.
-
-## How to choose the best form library?
-Various form libraries in React have evolved to greater extent which solves most of our common problems. Some open source enthusiast and react geeks came up with their own ideas of having a library which will not only handle above mentioned features but also will help us write our own custom input components letting us control their design, behaviour and presentation of the entire form. Choosing the right form library for our application depends on
-
-- How much code complexity gets reduced ?
-- How easy is it to create custom input elements
-- How easy is it to extract and change the form values
-- How easy is to write custom validation logics
-
-## Popular form libraries in React
-[Formsy React](https://github.com/christianalfoni/formsy-react) – “The main concept is that forms, inputs and validation is done very differently across developers and projects. This extension to React JS aims to be that “sweet spot” between flexibility and reusability.”
-
-[Redux Forms](http://redux-form.com/7.0.3/)– “Redux Form works with React Redux to enable an html form in React to use Redux to store all of its state.”
-
-[Formik](https://github.com/jaredpalmer/formik) – “Formik will keep things organized–making testing, refactoring, and reasoning about your forms a breeze.”
-
-[React Forms](https://github.com/tannerlinsley/react-form) – “React Forms library provides a set of tools for React to handle form rendering and validation.”
-
-Although there are many such libraries we restrict ourselves to comparing two of the most commonly used libraries __Formsy React__ and __Redux Forms__. Most of the other libraries works on a common principle. So choosing the right one will be an easier task if we understand the work flow of each library.
-
-__Formsy React__ was once most popular and most promising solution for most of the problems related to forms. __Redux Forms__ was extending the support of redux in our applications to forms and maintaining the data of all the forms in the app. Apart from being most popular, __Redux Form__ and __Formsy React__ have more things in common. The only thing which isn’t common is the approach with which developer integrates with their React Project and also the way they manage the data from forms.
-
-## Architecture
-
-### Formsy
-
-
-__Formsy__ architecture is pretty simple and direct, Input components inside formsy form are provided with ```get__()``` and ```set__()``` methods from __formsy mixin__ (or HOC in case of ES6). Using get and set methods we can communicate the data of the form with the library.
-
-### Redux Form
-
-
-__Redux form__ architecture is very much similar to Redux architecture, except there are input components as an addition. Input components wrapped with the library dispatch actions and payload which in turn updates the form Reducer of the Redux store, which in turns updates the UI.
-
-## Setting Up in a project
-### Formsy
-Well one of the few benefits of __Formsy__ is that there is no need of setting it up anywhere in the application. We can directly import ```Formsy.Form``` and use it with their custom input components.
-
-### Redux Form
-```jsx
-// in your root reducer
-import { combineReducers } from 'redux';
-import { reducer } from 'redux-form';
-export default combineReducers({
- form: reducer, // form Reducer which has all details about form.
- // ...other reducers
-});
-```
-
-In case of Redux form we need to have a form reducer to handle all data related to any form in the app.
-
-## Building a simple form
-Building a simple form with one input and one submit itself brings out a lot of differences between libraries.
-
-### Formsy
-```jsx
-import React, { Component } from 'react';
-import { Form } from 'formsy-react';
-
-class ExampleForm extends Component {
- constructor() {
- this.state = {
- canSubmit: false,
- };
-
- this.enableSubmit = this.enableSubmit.bind(this);
- this.disableSubmit = this.disableSubmit.bind(this);
- this.submitValues = this.submitValues.bind(this);
- this.handleReset = this.handleReset.bind(this);
- }
-
- setSubmit(canSubmit) {
- return () => {
- this.setState({
- canSubmit: true,
- });
- }
- }
-
- submitValues(values) {
- console.log(values);
- // ...code to submit values
- }
-
- handleReset() {
- this.refs.form.reset();
- }
-
- render() {
- return (
-
- );
- }
-}
-export default ExampleForm;
-```
-__Redux Form__
-```jsx
-import React from 'react';
-import { reduxForm, ... } from 'redux-form';
-
-const ExampleForm = ({ invalid, submitting, reset }) => {
- const handleSubmit = (values) => {
- console.log(values);
- // ...code to submit values
- };
-
- return (
-
- );
-};
-export default reduxForm({ form: 'example' })(ExampleForm);
-```
-#### Key Difference :
-__Formsy__ provides callbacks for all the form related events such as when form becomes ```valid```, ```invalid``` or ```pristine``` and over those callbacks we can define the behaviour of our components.
-
-__Redux forms__ is similar to __Formsy__ in terms of providing callbacks through HOC. The only difference is these callbacks dispatches an action to the store unlike __Formsy__ .
-
-We can switch to stateless component while working with __Redux Form__, with __Formsy__ this isn’t possible as every event we have to modify the local state of the form to get changes reflected over the children components.
-
-Also it took around 40 lines for use to write one simple form with __formsy__ whereas with Redux form it just took 15 lines of code.
-
-## Creating Custom Input
-Most of the modern web applications have variety of inputs like Date Range Picker, Range Selector etc. Easiness in Creating custom inputs with these libraries is one of the most important features for any such libraries.
-
-__Formsy__
-/* render part of building component */
-```jsx
-render() {
- return (
-
-);
-```
-## Key Difference:
-
-__Formsy__ either through mixin (since it still believes in ages old es5 syntax) or through HOC provides all the states about input and values provides through methods such as ```getValue```, ```showError```, ```getErrorMessage```.
-
-On the other hand __Redux Form__ provides the state of ```field``` and ```input``` element through props either in ```meta``` prop object or in ```input``` prop object to their input.
-
-Comparison of how to update the state in on change in the value from the input element is given below as example.
-
-Sending back the value to ```formsy``` state is the biggest pain, as for doing it we need to use ```setValue``` method (provided by mixin or HOC), and not only this we also have to call ```onChange``` method provided as prop to the custom Input element, which does the needful change as value updates.
-
-Whereas in __Redux Form__ this is much easier and clean.
-
-1. If we are using native HTML input element as part of our input component we don’t need to invoke any ```onChange``` we just need to pass ```value``` and ```onChange``` method from input prop to input field and everything will be handled by __Redux Form__ automatically.
-
-2. If we are not using native elements then we just need to call onChange method with updated value passed as argument to it and it will update automatically. And also Redux Form will automatically invoke any onChange method if passed from outside to Field component.
-
-## Validations
-Validations is an essential part of any form library. Modern day Forms have validations that have evolved greatly from olden days. There are variety of validations which we can see in day to day web applications. For example Synchronous validations (validation during typing / onblur…), Asynchronous validations (User types and validated based on server call asynchronously…), On submit validations. Both libraries have their own way of implementing validations on the input fields.
-
-### Using Built-In validations
-__Formsy__ have a very good range of built in validations, such as ```isEmail```, ```isUrl```, ```isAlphaNumeric```, ```isLength```. Also some of them lets us compare values with other fields or even some fixed values. They can be used in this way.
-```jsx
-/* Inside wrapped form */
-
-
-```
-But this has a disadvantage as to provide validation error one more prop i.e validationError needs to be passed which will pass the error message to component. Usage given below:
-```jsx
-/* Inside wrapped form */
-
-```
-The above code will pass an error message on failure of the validation.
-
-__Redux Form__
-Unfortunately the __Redux Form__ API does not gives us any built-in validations so for everything we will have to either use some external dependencies or have to define our own JSON structure for each field. This one of the minor drawback that __Redux Form__.
-
-__Adding custom validtion__
-For creating a custom validation __Formsy__ provides ```addValidationRule``` from its API, but the downside comes when we have to use this validation, like a using built-in validation we will have to pass the error with a separate prop ```validationError```. To use this we will have to separately pass the validtion name in validation prop using component.
-```jsx
-/* for defingin validation */
-Formsy.addValidationRule('isPhoneNo', (values, value) => {
- return validPhoneNoRegExPattern.test(value); // assuming validPhoneNoRegExPattern exists
-});
-```
-__Redux Form__ provide two major methods for validating values filled by the user in the form.
-
-An overall validation handler passed in options object while wrapping component with Redux Form HOC.
-```jsx
-const validate = values => {
- /* returned object has all errors with name of field as key and error message as value */
- const errors = {};
- if (!values.userName) {
- errors.userName = 'Please enter User Name';
- }
- // ... rest of conditions
- return errors;
-}
-
-const SampleForm = () => (
- // ...sample form markup
-);
-
-return reduxForm({ validate, ...otherValues })(SampleForm);
-```
-Field level validation where to each field can be provided with a validation method to validate that particular field with returning value as either error message or undefined if value is valid.
-
-```jsx
- !value ? 'Please provide user name' : undefined }
- ...otherProps
-/>
-/>
-```
-__Async validations__
-__Formsy React__ Unfortunately the original API of formsy does not provide us with any way of doing async validations.
-
-In __Redux Form__ async validation can be done at the field level in redux forms, eg: for checking the availability of user name while as soon as the particular field is blurred.
-```jsx
-const asyncValidate = (values) => {
- // ... returns a promise which does the async operation of validating the field.
-};
-
-const renderField = ({ meta }) => {
- /* asyncValidating flag in field meta prop to know the status of >ongoing async validating action */
- const { asyncValidating } = meta;
-
- // ... rendering of field
-};
-
-//... return of HOC
-return reduxForm({
- asyncValidate,
- /* option to specify the field of which "blurring" will trigger asyncValidate method */
- asyncBlurFields: ['userName'],
-});
-```
-## Initializing with Default values
-Initializing forms with values not only helps us to propagate some default values for the fields but also it helps us in pre-populate the values which are dependent on some other actions and also lets us build editing forms pre-filled with old values.
-
-__Formsy__ API does not let us initialize form with passing of one single prop to form object, but each component needs to be passed with initial value separately.
-
-Initializing __Redux form__ is possible but only by passing the initialValues prop to HOC component or passing in reduxForm options argument. Initializing fields individually is not possible in Redux Form because Field component doesn’t not support value prop.
-
-```initialValues``` is an object of default values which will have name of field as key and default value as value
-```jsx
- // or second method is
- return reduxForm({
- initialValues: {{ userName: 'Default User Name' }}
- })(SampleForm);
-```
-## Interaction between input elements
-Interaction between elements is an essential features which let us pre-fill values which are dependent on any other form element or also lets us to show preview of value, which was split in two or more sub values, as one. Example choosing a gender might change the options for upcoming values or address field can be split into address line 1, address line 2, city, etc.
-
-__Formsy__
-Using value of one input in another can be achieved using getModal available through Formsy.Form
-instance.
-```jsx
-
- {/* ... input component having value of gender */}
-
-
-```
-In the above example the gender dependent component have access to value of gender selected by the user and hence that input component can modify its options or anything according to gender selected by the user.
-
-__Redux Form__
-In __Redux Form__ there are numerous ways to get value of any input that entered by the user. There are selectors, direct methods which gives us access to the entered values and other than the mechanisms provided by the redux-form package since all the values are present in redux store we can access them whenever we want by subscribing to the store for that.
-
-One of the methods i.e is using [formValueSelector](http://redux-form.com/7.0.3/docs/api/FormValueSelector.md/) is given below:
-```jsx
- import { formValueSelector, //...other imports } from 'redux-form';
- import { connect } from 'react-redux';
-
- const selector = formValueSelector('signupForm');
-
- const SignupForm = ({ gender, ...props }) => (
-
- );
-
- export default connect(state => ({
- gender: selector(state, 'gender'),
- }))(reduxForm({ form: 'signupForm'})(SignupForm));
-```
-
-## Conclusion
-Both formsy and redux-form have their own merits and de-merits. In terms of support from open source community __Formsy__ is ahead of __Redux Form__ probably due to one fact that former came long before than later one, for example __formsy__ has formsy-react-components, formsy-react-validations, formsy-material-ui and redux-form lacks in this regard and have vey few such as redux-form-validators, redux-form-validation. Redux Form as we per our experience is very much adaptable and flexible as compared to __Formsy__.
-
-Formsy is not dependent on any external storage library (Everything is present in HOC) whereas Redux Form as name suggest is nothing without redux, a module which has got merits and de-merits of its own.
-
-Trying out both of these form libraries in React will help in identifying the right choice for the right use case.
-
-> Looking for [Read more React JS blogs ](/category/reactjs-experts)?
-
-> Looking for [React JS development company](/react-js-development)?
\ No newline at end of file
diff --git a/posts/form-libraries-in-react/images/Untitled-Diagram-3.jpg b/posts/form-libraries-in-react/images/Untitled-Diagram-3.jpg
deleted file mode 100644
index ed1f1d3..0000000
Binary files a/posts/form-libraries-in-react/images/Untitled-Diagram-3.jpg and /dev/null differ
diff --git a/posts/form-libraries-in-react/images/reduxFormDiagram-2.png b/posts/form-libraries-in-react/images/reduxFormDiagram-2.png
deleted file mode 100644
index bb48ffd..0000000
Binary files a/posts/form-libraries-in-react/images/reduxFormDiagram-2.png and /dev/null differ
diff --git a/posts/front-end-development-framework-number-1/2017-10-24-Which-Front-End-Development-Framework-is-number-1.md b/posts/front-end-development-framework-number-1/2017-10-24-Which-Front-End-Development-Framework-is-number-1.md
deleted file mode 100644
index 6755b86..0000000
--- a/posts/front-end-development-framework-number-1/2017-10-24-Which-Front-End-Development-Framework-is-number-1.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Which Front End Development Framework is number 1?'
-date: 2017-10-24
-featuredpost: false
-description: >-
- VueJS vs ReactJS, Over past few years, the web development arena has witnessed various new developments. New types of frameworks are constantly on the rise. Frameworks are constantly being developed and improved to gain a competitive advantage over counterparts. ReactJS"
-author: Prasanna
-link: /front-end-development-framework-number-1
-category:
-- Development
----
-## VueJS vs ReactJS,
-
-Over past few years, the web development arena has witnessed various new developments. New types of frameworks are constantly on the rise. Frameworks are constantly being developed and improved to gain a competitive advantage over counterparts.
-
-ReactJS is the most popular front end development framework right now. However VueJS is an up and coming front end development framework that is fast gaining in terms of popularity. It is only a matter of time before VueJS starts giving stiff competition to ReactJS.
-
-To figure out if ReactJS or VueJS is a better platform for you. The following factors need to be considered.
-
-
-## Learning curve
-Vue is probably the best choice if you want an easy to learn front end development framework. Vue is simple, it features a lot of concepts from Angular 1 and React. You can use it without any build system.
-
-React on the other hand uses the least abstractions, however it will take more time to learn the best practices, as there are a lot of ways in which you can do the same thing or go wrong. This makes ReactJS bigger and a little more complex to set up.
-
-## Scalability
-For large applications, both Front end development frameworks Vue and React offer robust routing solutions. The React community has been very innovative in terms of state management solutions (e.g. Flux/Redux).
-
-These state management patterns and even Redux itself can be easily integrated into Vue applications. Using Vuex, an Elm-inspired state management solution that integrates deeply into Vue. Vue claims this offers a superior development experience.
-
-## 3rd party library compatibility
-Even though ReactJS doesn’t work with DOM, it is pure JavaScript logic and because of its popularity even the DOM based libraries have their alternative in React.
-
-Vue works perfectly for both DOM and JavaScript and is only second because it has less framework specific libraries.
-
-## Development time
-Vue comes with prebuilt data binding and MVC model, making it way easier to set up compared to react and angular. Vue is certainly easy to set up and does not require many changes or syntax and that’s what people love about it; it was designed to solve the fatigue.
-
-Writing single-file Vue components feels very natural . Vue provides a really handy command-line tool to help you generate barebones projects with very little setup. You can also write your own CLI templates or use the provided templates that are very flexible.
-
-React is fairly simple to understand but in fact it takes a long time to set up a react project. But then you can start to make an app and it should be relatively easy to add new features.
-
-## Size
-
-Vue is the smallest and contains a lot as well. Actually you might think it doesn’t matter, but say that to a cheap android 3g smartphone and I don’t think you will be so sure about it.
-
-ReactJS is bigger than VueJS, but smaller than AngularJS.
-
-## Community and popularity
-Definitely React has been the most popular front end development framework , It has been very popular in full stack communities in 2016. It is also becoming a good choice for native JavaScript mobile and even desktop apps.
-
-Vue’s documentation is a dream. Its Guide and API reference are great. Evan You (the author and project leader) has a way with putting modern development in layman’s terms. Even for seasoned developers, it’s refreshing.
-
-Vue’s companion libraries for state management and routing are all officially supported and kept up-to-date with the core library.
-
-React instead chooses to leave these concerns to the community, creating a more fragmented ecosystem. But since it is more popular React’s ecosystem is considerably richer than Vue’s.
-
-
-
-## Jobs
-ReactJS is the most popular right now: That counts for a lot, most popular means it has the most resources online, better job opportunities and more likely to have long term success. React is very popular and it’s been around longer. It’s likely more businesses have used React. Keep that in mind if you’re in the market for a new job right now.
-
-Vue is less popular and is not supported by a big company, therefore businesses choose between Angular and React. Vue still feels like the new kid on the block . However, many developers have started adopting Vue, after considering Angular and React very heavily. Some big names that have adopted Vue are GitLab, Laravel, PageKit, etc.
-
-## Company’s perspective
-React comes with a patent clause that for some businesses would be quite a big issue. However, there are also a few alternatives that work in the same way as react and even use the save syntax, like inferno and RAX.
-
-Vue isn’t a child of a big company, it’s a very successful side project started by one person and therefore companies tend to ignore it more often, however they shouldn’t in my opinion.
-
-## Beyond the web
-React is ideal for almost any platform. Whether it’s web or native development, React has you covered and is maturing in both directions. The benefit is being a flexible developer in any context when it comes to UI development. It’s even made its way into virtual reality.
-
-Vue 2.0 is moving towards native too. Evan and his team are working with Alibaba to create Weex, which will allow native rendering comparable to React Native. Vue 2.0 is primarily focused on web dev now, but was written to support other platforms moving forward. According to Evan’s latest Vue blog post, 2017’s going to be a big year for Weex.
diff --git a/posts/front-end-development-framework-number-1/images/1-EnbFMixxPy5-kQiJmGSISg-1024x535.png b/posts/front-end-development-framework-number-1/images/1-EnbFMixxPy5-kQiJmGSISg-1024x535.png
deleted file mode 100644
index 14a28b1..0000000
Binary files a/posts/front-end-development-framework-number-1/images/1-EnbFMixxPy5-kQiJmGSISg-1024x535.png and /dev/null differ
diff --git a/posts/front-end-development-framework-number-1/images/vuejs-vs-reactjs1-768x416.png b/posts/front-end-development-framework-number-1/images/vuejs-vs-reactjs1-768x416.png
deleted file mode 100644
index e5730b9..0000000
Binary files a/posts/front-end-development-framework-number-1/images/vuejs-vs-reactjs1-768x416.png and /dev/null differ
diff --git a/posts/functional-approach-higher-order-components-recompose/2017-06-19-Functional-Approach-to-Higher-Order-Components-and-Recompose.md b/posts/functional-approach-higher-order-components-recompose/2017-06-19-Functional-Approach-to-Higher-Order-Components-and-Recompose.md
deleted file mode 100644
index 057345b..0000000
--- a/posts/functional-approach-higher-order-components-recompose/2017-06-19-Functional-Approach-to-Higher-Order-Components-and-Recompose.md
+++ /dev/null
@@ -1,178 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Functional Approach to Higher Order Components and Recompose'
-date: 2017-06-19
-featuredpost: false
-description: >-
- This is a continuation of our previous post where we talked about how Higher Order Components (HOC) help abstraction of logic. This in turn helps simplifying a React application. Now let’s say we have a React Component on which we
-keywords:
-- reactjs
-- higher order components
-- developing with reactjs
-- recompose
-link: /functional-approach-higher-order-components-recompose
-category:
-- Development
-tags:
-- higher order components in reactjs
-- react js
-- reactjs
-author: Prasanna
----
-
-This is a continuation of our [previous post](/using-higher-order-components-react-application/) where we talked about how Higher Order Components (HOC) help abstraction of logic. This in turn helps simplifying a React application.
-
-Now let’s say we have a React Component on which we need to do certain tasks:
-
-1. Omit certain props which parent component passes. In our case we will omit ```isDone``` prop.
-2. Conditionally check if we need to still show spinner based on certain props. In our case, if we have ```isLoading``` prop set to ```true``` then show a Component which renders a Preloader. That is show a preloader if ```isLoading``` prop is ```true``` and render the component if ```isLoading``` prop is ```false```.
-3. Attach an event handler which does some preprocessing of data and then logs (on console) the data on clicking the button. (Since we cannot have event handlers in functional components, I particularly want to discuss how we can do this)
-
-For this the usual way would be writing a HOC for each task separately and combine by using one on top of each other.
-
-Now let’s look at an alternative way for achieving the same using functional programming. We described Higher Order Functions in our [previous post](/using-higher-order-components-react-application/) as:
-
-__Functions that operate on other functions, either by taking them as arguments or by returning them, are called higher-order functions.__
-
-If we adopt functional programming, we need to think about composing existing functions as much as possible in order to create new functions. Currying is one major technique used to achieve this.
-
-Currying is a method of constructing functions which facilitates the function to have all arguments passed to it returning a result or have partial arguments to be passed resulting a new function which expects remaining arguments. For example:
-```jsx
-const fullName = firstName => lastName => {
- return firstName+lastName;
-};
-```
-Now if we use ```fullName(‘Code’)``` it will return another function which expects a ```lastName```. Its first name will be replaced as Code.
-```js
-const partialName = fullName(‘Code’);
-```
-When we write
-```jsx
-const finalName = partialName(‘brahma’); // Returns ‘Codebrahma’
-```
-```finalName``` will be assigned with ‘Codebrahma’. This is a useful technique since it uses to create and compose multiple functions.
-
-So considering the previously discussed task, first we will create a ```conversionFunction``` which can omit the __‘isDone’__ prop.
-```jsx
-// Import React
-import React from 'react';
-
-// Import omit from 'lodash'
-import omit from 'lodash/omit';
-
-// A simple dummy component for which we are omitting
-const DummyComponent = props => (
-
- A simple dummy component
-
-);
-
-// React.createFactory is considered legacy
-// We are writing a custom function which takes a component, its props and returns the new component
-
-// Why a function here ? So that we can modify either the props or component
-
-const createFactory = Component => {
- return props => React.createElement(
- Component,
- props,
- );
-}
-
-// Read this as 'conversionFunction' takes 'anyFunction' and a React component and returns a new function
-// This function returns a new React component based on currying
-
-const conversionFunction = anyFunction => Component => {
- const factory = createFactory(Component);
- const mapProps = props => factory(anyFunction(props));
- return mapProps;
-};
-
-// This line does omits based on currying
-export default conversionFunction(props => omit(props, ['isDone']))(DummyComponent);
-```
-Now we can see that without adding an additional React Class we are able to write a HOC which omits the mentioned prop.
-
-Now the second task is to show a Preloader if we have ```isLoading``` prop set to true. To achieve this the we need to change the conversion function like this.
-```jsx
-const conversionFunction = anyFunction => Component => {
- const factory = createFactory(Component);
- // Render a preloader if you have such a props
- const mapProps = props => (props.isLoading ? : factory(anyFunction(props)));
- return mapProps;
-};
-```
-Now if we pass ```isLoading``` prop as true, it will always render a preloader. This gives control from the parent component to decide when to load the preloader and when to load the actual component
-
-The third task is to attach an event handler to the functional component and console logging some data on clicking a button using that even handler. This is an extension to the above concept except that we will return one more React Component squashed inside.
-```jsx
-// Import React
-import React from 'react';
-
-// Import omit from 'lodash'
-import omit from 'lodash/omit';
-
-import merge from 'lodash/merge';
-
-const Preloader = props => (
-
-);
-
-// Expects { handlerName, handlerFunction } and returns a factory with event handler in props
-// see the render function.
-const conversionFunction = ({ handlerName, handlerFunction }) => anyFunction => Component => {
- const factory = createFactory(Component);
- return class ComponentWithHandler extends React.Component {
- constructor(props) {
- super(props);
- }
- render() {
- return this.props.isLoading ? : factory({
- ...this.props,
- [handlerName]: handlerFunction,
- });
- }
- }
-}
-
-// We can change this handler as we like
-const sampleHandlerFunction = {
- handlerName: 'handleButtonClick',
- handlerFunction: (data) => {
- console.log(' logging data ', data);
- }
-};
-
-export default conversionFunction(sampleHandlerFunction)(props => omit(props, ['isDone']))(DummyComponent);
-```
-We can see that we have used functional programming to achieve all the tasks mentioned above. ```conversionFunction``` is now a curried function which will work for any component that can do all the target tasks. Also we can ignore certain tasks as per the requirement.
-
-The whole idea of doing this is functionality abstraction which results in components which depends only on props. The advantage of having more and more stateless components are
-
-- Clean code while avoiding bloated components.
-- Easy to understand and easy to test.
-- Better performance since there are no lifecycle methods.
-
-
-Recompose [(GitHub link)](https://github.com/acdlite/recompose) is a library which was developed based on the idea. It has list of utility functions which they claim as “Recompose is a React utility belt for function components and higher-order components. Think of it like lodash for React.” They have various cool functionalities abstracted through HOCs. From providing state through props for functional components to adding lifecycle events to functional components they have added functionalities which we feel is required most of the times while developing a React app.
-
-Using these methods we can write really cool abstracting logic which we are regularly repeating among components.
\ No newline at end of file
diff --git a/posts/getting-started-with-tmux/getting-started-with-tmux.md b/posts/getting-started-with-tmux/getting-started-with-tmux.md
deleted file mode 100644
index 52daeb2..0000000
--- a/posts/getting-started-with-tmux/getting-started-with-tmux.md
+++ /dev/null
@@ -1,91 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Getting Started with Tmux'
-date: 2014-08-04
-featuredpost: false
-description: >-
- Tmux has become an essential development tool for many programmers. Here is a brief tutorial on getting started with Tmux.
-author: Yuvaraja Balamurugan
-link: /getting-started-with-tmux
-category:
-- Tutorial
-tags:
-- tmux
----
-
-tmux is an awesome tool for developers to improve their workflow. Here I am going to cover some of the basic functionalities along with the aliases that I use, for you guys to start with tmux.
-
-## tmux.conf
-
-The ~/.tmux.conf file is a config file for tmux. The tmux global configs are set here. This is our playground for this post.
-
-## Remap the prefix
-
-Now Let us remap the prefix from `crtl + b` to `ctrl + a`. I choose `ctrl + a` because it is easier to access those keys together. Add the fllowing snippet to your `~/.tmux.conf`file and reload it using `source-file ~/.tmux.conf`.
-
-
-```bash
-# remap prefix to Control + a
-set -g prefix C-a
-unbind C-b
-bind C-a send-prefix
-```
-
-## Reload easily
-
-Now after changing the `~/.tmux.conf`, I felt a little annoying to run the command`source-file ~/.tmux.conf` everytime. So I wrote 2 lines to make this task just a single button away. Add the following lines to your `~/.tmux.conf` and reload it using `source-file ~/.tmux.conf`
-
-
-```bash
-# force a reload of the config file
-unbind r
-bind r source-file ~/.tmux.conf
-```
-
-Now all you need to do is change the `tmux.conf` file and do `ctrl + a` and `r`. This will reload the config file for you.
-
-## Panes
-
-Another feature of tmux is you can type `ctrl + a` and % to split the window vertically and `ctrl + a` and " to split the window horizontally. Personally I found this very annoying and hard to remember. So I decided to have the key `v` for vertical split and `h` for horizontal split. So I added the following to my `tmux.conf`file. Additionally doing a vertical or horizontal split will split the pane and put you into the home directory.
-
-
-```bash
-unbind %
-unbind '"'
-bind C-v split-window -v -c "#{pane_current_path}"
-bind C-h split-window -h -c "#{pane_current_path}"
-```
-
-This will enable you to use `ctrl + v` to split the pane vertically and put you in the same folder as you were before splitting the pane. Similarly for `ctrl + h`.
-
-## Additional Points
-
-* You can create new windows using `ctrl + a` and `c`.
-* You can kill a pane using `ctrl + a` and `x`. This will ask you for (y)es or (n)o prompt, typing in `y` will kill the active pane.
-* Google about tmux sessions and learn to use them efficiently.
-* Make tmux start at the start of your terminal.
-
-The following is the tmux aliases that I use. Feel free to use them as per your needs.
-
-
-```bash
-tnew_session(){
-
- TMUX= tmux new-session -d -s $1
- tmux switch-client -t $1
-}
-
-
-alias tnews='tnew_session'
-alias tls='tmux list-session'
-alias tlw='tmux list-window'
-alias tsw='tmux switch -t '
-alias tlc='tmux list-command'
-alias tat='tmux attach -t'
-alias trs='tmux rename-session -t'
-
-
-
-alias tks='tmux kill-session -t'
-```
-
\ No newline at end of file
diff --git a/posts/git-hunks/git-hunks.md b/posts/git-hunks/git-hunks.md
deleted file mode 100644
index 6ea922b..0000000
--- a/posts/git-hunks/git-hunks.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Git Hunks'
-date: 2014-05-05
-featuredpost: false
-description: >-
- Codebrahma explaining Git Hunks, one of the awesome tools in git. Git Hunks, git bisect and git cherrypick.
-author: Yuvaraja Balamurugan
-link: /git-hunks
-category:
-- Research and Articles
----
-
-Git is one of my favorite software. It always impresses me. Here is one of the awesome tools in git.
-
-Let us consider a scenario where you modify a file and you just want to stage a part of the file. You stage hunk by hunk in git using the `--patch` option on `git add`. When you do `git add . -p` you will be presented with each hunk that is changed and various options like this
-
-```diff
-diff –git a/sample.txt b/sample.txt
-index 65d26ae..1618d01 100644
---— a/sample.txt
-+++ b/sample.txt
-@@ -1,3 +1,5 @@ Hi,
-+ This text was added now.
-+ This text was present initially.
-Stage this hunk [y,n,q,a,d,/,e,?]?
-```
-
-You can type `y` to add the hunk, or `n` to reject the hunk and it won’t be staged. Or you can type `e` to edit the hunk. And you will be presented with the hunk and a detailed description of how to edit the hunk.
-
-```bash
-# Manual hunk edit mode – see bottom for a quick guide
-@@ -1,3 +1,5 @@ Hi,
-+ This text was added now.
-+ This text was present initially.
-# ---
-# To remove '-' lines, make them ' ' lines (context).
-# To remove '+' lines, delete them.
-# Lines starting with # will be removed.
-#
-# If the patch applies cleanly, the edited hunk will immediately be
-# marked for staging. If it does not apply cleanly, you will be given
-# an opportunity to edit again. If all lines of the hunk are removed,
-# then the edit is aborted and the hunk is left unchanged.
-```
-
-If you are aware of some other awesome git tools let us know in the comments below.
-
diff --git a/posts/hiring-in-house-tech-team-vs-outsourcing-mvp-development/2017-03-08-Hiring-In-House-Tech-Team-vs-Outsourcing-Your-MVP-Development.md b/posts/hiring-in-house-tech-team-vs-outsourcing-mvp-development/2017-03-08-Hiring-In-House-Tech-Team-vs-Outsourcing-Your-MVP-Development.md
deleted file mode 100644
index 40b2354..0000000
--- a/posts/hiring-in-house-tech-team-vs-outsourcing-mvp-development/2017-03-08-Hiring-In-House-Tech-Team-vs-Outsourcing-Your-MVP-Development.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Hiring In-House Tech Team vs Outsourcing Your MVP Development'
-date: 2017-03-08
-featuredpost: false
-description: >-
- Should I hire an in-house team or outsource my MVP development? Every entrepreneur faces this question at some point. Read on to know whats best for you.
-author: Anand Narayan
-link: /hiring-in-house-tech-team-vs-outsourcing-mvp-development
-category:
-- Business
-tags:
-- outsourced software development
-- outsouced tech team
----
-
-> Should I form the tech team in-house now or outsource development, do the launch and hire talent afterwards?
-
-This is one of the most common questions being asked by non technical founders. Even technical founders who are over burdened with things to do, are considering outsourcing as a viable option. A quick look at the related questions in the popular QnA platform Quora, will tell you how prevalent this dilemma is.
-
-
-
-As things gets serious and you raise a seed round to validate your idea, you want to quickly find the right product market fit. You have limited runway in terms of time, money and your own skillset. Unless you already have a strong technical co-founder or team member(s), finding key technical members can get very frustrating.
-
-Assessing a developer’s skillset, specially if the found does not have a tech background, can be very difficult. Hiring an agency can, and should always be kept as a viable option in case you don’t find good talent to work with, fast. Even if you have someone to help you technically, extending your team with some solid overseas developers can give you the much needed boost.
-
-Getting to the question of in-house development vs outsourcing your product development, let’s look at the constraints at hand:
-
-## Budget
-
-During the initial phases of your startup, budget will be a huge, if not the biggest, constraint. You have X amount of money, and you need to plan for development cost, marketing cost, sales expenditure, extra overheads and what not. You’re in the hyper-saver mode – living on ramen, cutting costs wherever possible.
-You allot Y dollars for your product development and you absolutely can’t go over it.
-
-## Time
-
-When you start planning the launch of your product, one of the first things to do is to set timelines. Either the market decides your timelines for you – “need to get to market before our competition does”. Or you decide them for yourself – “we need to start testing out the first prototype 4 months from now”.
-What time you allot for your project becomes a constraint, and needs to be maintained.
-
-## Skillset
-
-The kind of project you’re working on demands a specific skillset. If you’re building a highly evolved financial chatbot, you’ll need developers who are proficient in Machine Learning, Artificial Intelligence and Natural Language Processing. You’ll need a some good backend developers to build scalable systems while the front end folks work on the interface.
-
-Requirements of your project dictates the skillset needed, and that becomes a constraint while looking for people to help you with.
-
-In a nutshell, you need a team of developers who have the required skillset, can work within the stipulated budget and can deliver the product within the required time frame. Unless you have a strong network of developers at you disposal – pulling this off will be a herculean task!
-
-Agencies to outsource your development to, on the other hand, are much easier to find. Thanks to the rapid development and globalization, there are software development agencies located all across the globe. Finding one that fits your need is relatively easier.
-
-## Finding a development agency within your budget
-Agencies located in south-east Asian countries like India and certain east-European countries are much more cost effective than their counterparts in the United States. Outsourcing your product development to an agency located in India could reduce your development cost by as much as 50%, without compromising on the quality.
-
-## Do agencies deliver on time
-Professional agencies quote the project with an estimated delivery time. How we normally estimate the time-to-completion of a project is that we break it down into smaller shippable modules. Each module then is estimated by the developers, and because the developers have almost always worked on something similar, they’re estimates are pretty accurate. Professional software development agencies are liable to deliver the projects on time.
-
-Do agencies have skilled developers?
-Couple of years back I asked a developer friend, “Why would good developers join an agency and not a product based company”. “Two reasons”, he said, “Expertise and boredom”.
-
-Let me clarify – working with an agency gives developers a chance to work on multiple projects. It just keeps things more interesting and because they work iteratively on multiple projects – they level up much faster than their peers. Developers who work in agencies have “seen it all”, as some say.
-
-In conclusion, if you’re having a hard time finding developers to hire for your product, looking towards [outsourced product development](/outsourced-product-development/) agencies to get your MVP done is actually a very viable idea. If you want to learn more about finding the right agency for your product, [this article will help](/software-outsourcing-find-right-tech-team-product/).
\ No newline at end of file
diff --git a/posts/hiring-in-house-tech-team-vs-outsourcing-mvp-development/images/quora-similar-questions.png b/posts/hiring-in-house-tech-team-vs-outsourcing-mvp-development/images/quora-similar-questions.png
deleted file mode 100644
index c972f6b..0000000
Binary files a/posts/hiring-in-house-tech-team-vs-outsourcing-mvp-development/images/quora-similar-questions.png and /dev/null differ
diff --git a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/2018-12-24-How-to-detect-and-fix-a-WordPress-redirect-malware-attack.md b/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/2018-12-24-How-to-detect-and-fix-a-WordPress-redirect-malware-attack.md
deleted file mode 100644
index c0ffa7c..0000000
--- a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/2018-12-24-How-to-detect-and-fix-a-WordPress-redirect-malware-attack.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'How to detect and fix a WordPress redirect malware attack.'
-date: 2018-12-18
-featuredpost: false
-description: >-
- Recently our company site, codebrahma.com dropped 30% of hits suddenly in a short interval of time. Shows that the site hits dropped around 30-40% After sometime some of the users of our site reported that the site is redirecting them
-author: Anand Narayan
-link: /how-to-detect-and-fix-a-wordpress-redirect-malware-attack
-category:
-- Tutorial
-tags:
-- malware attack fix
-- wordpress attack fix
-- wordpress redirect malware
----
-Recently our company site, codebrahma.com dropped 30% of hits suddenly in a short interval of time.
-
-
-
-Shows that the site hits dropped around 30-40%
-After sometime some of the users of our site reported that the site is redirecting them to some random malware sites. It was a hard time to replicate those malware redirects since it was occurring very randomly. We later found out that our WordPress code was injected with malware and we will share in detail how we solved it.
-
- __How we replicated the issue__:
-
-We tried to replicate the issue and understand how this was happening with the help of chrome dev tools. Finally we found out that when the user country was set anything apart from India (our origin country) or when the user is using a mobile (based on user agent) the probability of the malware redirects was higher. Since this was happening very randomly we tried to use proxy to understand when it happens.
-
-Also we found out that only the organic hits are affected greatly. The direct hits were still comparable with the older data. So there must be some injected code which looks at all these details and randomize this. We enabled the remote debugging of mobile phone’s Chrome browser by which we were able to inspect the network requests in chrome browser. We were able to replicate the HTML code which has the random redirection script in it.
-
-
-HTML code with redirect snippet from the malware
-
-__How we solved it ?__
-
-__Step 1: Removal of visible injected files__
-
-We found that so many so many encrypted PHP files injected on our system. We found that the files were injected at various places of the system including /var, /html, /wordpress. We tried to narrow down when the issue started to happen (in our case it was Nov 17th). We saw what files were added to the machine after 17th and removed these files. We restarted our Apache server and it had no effect. We could still find that the malware redirect was present.
-
-__Step 2: Moving to a new machine__
-
-Since Step 1 did not help, we tried to move our entire wordpress site to a new digital ocean droplet (with an assumption that our machine was compromised). We moved all the data in db and installed wordpress on new machine. The files copied from old machine to new machine were apache config, WordPress config, WordPress database dump, WordPress uploads folder which has all the images. But still the issue was not resolved. So our search narrows down to these files which were transferred.
-
-__Step 3: Inspecting all the files__
-
-We found in google on certain solutions that injection can be a encrypted PHP code. We started inspecting all the files copied from old machine to new machine. While inspecting the WordPress config, we found a strange line of script in WordPress config.
-
-
-
-We decrypted the above script with the help of https://malwaredecoder.com and found that it is injecting a script from ‘/var/www/html/wp-content/uploads/2013/.4845dca9.ico’
-
-
-Decoding the file
-The contents of the file looked like this
-
-
-Contents of the injected file
-We removed this file and updated WordPress config and restarted apache. Then the issue stopped occurring.
-
-__Root cause:__
-
-The above issue had occurred because the old machine in which our site was deployed was vulnerable to hack. It has SSH password authentication enabled. The SSH password was not so much strong.
-The machine was allowing SSH connection from anywhere in the world.
-Unnecessary ports were open on the machine (MySQL and other services).
-
-__Solution__
-
-We disabled the SSH password authentication for the new machine and enabled only key(PEM file) for authentication
-Configured Digital Ocean settings to have firewall in a way that it will only allow inbound SSH connections from whitelisted IPs.
-Closed unnecessary ports.
-
-__What if you encounter such an issue ?__
-
-1. Don’t panic
-2. Try to identify the start date when this issue started using google analytics.
-3. Look at all the wordpress files / config files and other files which were changed after that.
-4. Try to find the script which is similar to the infected one mentioned as above.
\ No newline at end of file
diff --git a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-1.09.18-PM-1.png b/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-1.09.18-PM-1.png
deleted file mode 100644
index 82e07a3..0000000
Binary files a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-1.09.18-PM-1.png and /dev/null differ
diff --git a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-1.10.19-PM.png b/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-1.10.19-PM.png
deleted file mode 100644
index d00d223..0000000
Binary files a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-1.10.19-PM.png and /dev/null differ
diff --git a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-11.45.23-AM.png b/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-11.45.23-AM.png
deleted file mode 100644
index cde4263..0000000
Binary files a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-11.45.23-AM.png and /dev/null differ
diff --git a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-12.03.37-PM-2.png b/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-12.03.37-PM-2.png
deleted file mode 100644
index 325c148..0000000
Binary files a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-12.03.37-PM-2.png and /dev/null differ
diff --git a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-12.59.53-PM-1.png b/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-12.59.53-PM-1.png
deleted file mode 100644
index 777c8f7..0000000
Binary files a/posts/how-to-detect-and-fix-a-wordpress-redirect-malware-attack/images/Screen-Shot-2018-12-24-at-12.59.53-PM-1.png and /dev/null differ
diff --git a/posts/how-to-use-immutable-js-in-a-react-redux-application/2017-05-18-HOW-TO-USE-IMMUTABLE.JS-IN-A-REACT-REDUX-APPLICATION.md b/posts/how-to-use-immutable-js-in-a-react-redux-application/2017-05-18-HOW-TO-USE-IMMUTABLE.JS-IN-A-REACT-REDUX-APPLICATION.md
deleted file mode 100644
index d3ac0a8..0000000
--- a/posts/how-to-use-immutable-js-in-a-react-redux-application/2017-05-18-HOW-TO-USE-IMMUTABLE.JS-IN-A-REACT-REDUX-APPLICATION.md
+++ /dev/null
@@ -1,160 +0,0 @@
----
-templateKey: 'blog-post'
-title: How To Use Immutable.js in a React Redux Application
-date: 2017-05-18
-featuredpost: false
-description: >-
- If you're trying to use Immutable.js with a React Redux application and are having problems, this post can help.
-keywords:
-- ImmutableJS
-- react redux application
-- immutable state redux
-link: /how-to-use-immutable-js-in-a-react-redux-application
-category:
-- Tutorial
-author: Prasanna
-tags:
-- react
-- immutable.js
-- immutablejs
----
-ReactJS is one of the more popular Javascript libraries for developing front-end applications. Along with redux it gives good control in persisting the app state in the browser. State can be of anything among user interactions with the app or API data.
-
-One of the key requirements of redux is that each reducer must be pure. That is given a state and an action it should always give a new state but not mutate the existing one.
-
-This helps in:
-
-__Time Traveling__ – Moving to the Previous states.
-
-__Optimized re rendering__ of react components based on change in redux state. (Since the final state is different from initial based on both reference and value).
-
-The straight forward way of changing redux store based on an action is using spread operators as described. Lets say to update the state’s ```activeSelected``` we can do something like
-```jsx
-return {...state, { activeSelected: updateValue } }.
-```
-But this gets complex once the state goes bigger and when you need to do more operations inside each reducer.
-
-There are certain libraries which helps in making this simpler (immutable js, mori, updeep…). One of the popular library among those is Immutable.js which was developed by facebook. The core of immutable JS is
-
-> Data encapsulated in immutable JS is never mutated and always a new copy is returned.
-
-It’s API is very rich and it provides optimised performance by structural sharing.
-
-With immutable JS we can easily do the same task by:
-
-```jsx
-return state.set(‘activeSelected’, updateValue);
- ```
-
-The above code returns a new copy of state rather than returning a mutated one.
-
-The Immuateble.js library has data structures like Map (for JS objects), List (for JS arrays), Set, ordered Map, Seq and so on.
-Although there are really lot of good articles on what is ImmutableJS and why it should be used with redux, there is still room for confusion for a beginner when they start with Redux.
-
-> Hire kickass ReactJS developers
-
-Some of the common questions:
-
-
-__1. Should I maintain my complete Redux state of the application in ImmutableJS ?__
-If we are going to use ImmutableJS in our application, the best way to approach it would be to think of the entire store made of Immutable objects. This helps in:
-
-- Using the API efficiently (due to structural sharing).
-- Efficiency in memory.
-- Lazy Seq to convert into sequencing where can do operations like map, reduce.. and bringing it back to regular Immutable object.
-
-If you encounter any deep nested JS objects, you can use FromJS API to convert them. This will convert every object to Immutable Map and convert every List to Immutable Array.
-```js
-Const deeplyNestedObject = // any deeply nested object
-Let state = fromJS(deeplyNestedObject);
-```
-__2. If so, how will I maintain and modify them?__
-The main advantage of converting entire state to ImmutableJS is to use their API which does every operation in an optimized manner. They offer a set of APIs to modify or update the immutable object. For example
-
-Merging a state with another
-```js
-const map1 = Map({ a: 1, b: 2, c: 3, d: 4 })
-const map2 = Map({ c: 10, a: 20, t: 30 })
-const obj = { d: 100, o: 200, g: 300 }
-const map3 = map1.merge(map2, obj); // merges the given objects
-// Map { a: 20, b: 2, c: 10, d: 100, t: 30, o: 200, g: 300 }
-```
-Updating a deep Object
-```js
-const map1 = Map({ a: { b: 2 }})
-Map1 = map1.setIn([‘a’, ‘b’], 3)
-// Map { a: { b: 3 }}
-```
-There are other useful methods in their API which is useful for solving most of the tasks.
-
-__3. How to do regular lodash type map, reduce and other operations?__
-With Immutable JS we have option to convert it into Seq which Represents a sequence of values, but may not be backed by a concrete data structure. This helps us perform lodash type chain operations efficiently.
-```js
-const { Seq } = require('immutable')
-const oddSquares = Seq([ 1, 2, 3, 4, 5, 6, 7, 8 ])
- .filter(x => x % 2 !== 0) // Filters all odd numbers
- .map(x => x * x) // squares it. We can keep adding additional operations...
-```
-The resulting sequence can be converted to any data structure of our choice. This is greatly beneficial since the result is a immutable data structure which is completely new.
-
-__4. Should I use it inside components too ?__
-So you are done with redux change. Components which are subscribed to redux will get notifications about the change. If we are using ‘react-redux’ library to connect then the mapStateToProps function will look something like this:
-```jsx
-mapStateToProps = (state) => {
- activeSelected: state.get(‘activeSelected’) // Returns a new activeSelected even if data is not changed.
-}
-```
-Since the component re renders based on comparing the props, if we are using the above mentioned way, then it will re render every time when redux store changes. Since immutable objects returns new reference each time (even if it has same data and remains unchanged during transition) this way will slow down the app due to unnecessary re renders. The best way to avoid this is by writing a HOC something like this:
-```jsx
-import React from 'react';
-
-import { reduce } from 'lodash';
-
-import { Iterable } from 'immutable';
-
-// Higher Order component to wrap the props
-const ToJS = (WrappedComponent) => {
- return class ImmutableWrapper extends React.Component {
-
- constructor(props) {
- super(props);
-
- this.updateNewProps = this.updateNewProps.bind(this);
- this.newProps = this.updateNewProps(this.props);
- }
-
- // Function to check if immutable object. If so then convert
- updateNewProps(currentProps) {
- const objecEntries = Object.entries(currentProps);
- return reduce(objecEntries, (newProps, entry) => {
- newProps[entry[0]] = Iterable.isIterable(entry[1]) ? entry[1].toJS() : entry[1]; // eslint-disable-line
- return newProps;
- }, {});
- }
-
- // Whenever it receives new props, pass in new props
- componentWillReceiveProps(nextProps) {
- this.newProps = this.updateNewProps(nextProps);
- }
-
- render() {
- return (
-
- );
- }
- };
-};
-
-export default ToJS;
-```
-So that the container can be exported simply like ```ToJS(). This will ensure that the container will receive props only when there is a data change.```
-
-__5. What is the advantage of using ImmutableJS over lodash or normal JS objects?__
-The biggest advantage of using Immutable is efficiency. It achieves its efficiency through structural sharing. More efficient processing means faster apps; without the headache of maintaining a huge codebase.
-
-You can read more about this [here](https://medium.com/@dtinth/immutable-js-persistent-data-structures-and-structural-sharing-6d163fbd73d2).
-
-__6. Should we use immutable JS for our application?__
-It really depends on how big or complex the state is. If we have a state which is just going to deal with API data or static data then it is preferable to not use it. If we are going to do lot of state changes with deep nested objects it is good to use it.
\ No newline at end of file
diff --git a/posts/implementing-blockchain-businesses/2017-05-30-Implementing-Blockchain-For-Businesses.md b/posts/implementing-blockchain-businesses/2017-05-30-Implementing-Blockchain-For-Businesses.md
deleted file mode 100644
index 728bebc..0000000
--- a/posts/implementing-blockchain-businesses/2017-05-30-Implementing-Blockchain-For-Businesses.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-templateKey: "blog-post"
-title: "Implementing Blockchain For Businesses"
-date: 2017-05-30
-featuredpost: false
-description: >-
- Blockchain based systems is all the hype nowadays. But do you really need to consider adopting blockchain for your business? Read to find out more.
-keywords:
-- blockchain development company
-- blockchain for businesses
-- blockchain based systems
-link: /implementing-blockchain-businesses
-category:
-- Business
-tags:
-- blockchain
-- databases
-- fintech
-author: Anand Narayan
-scripts:
-- https://ssl.gstatic.com/trends_nrtr/1845_RC03/embed_loader.js
-- /scripts/chart-loader.js
----
-
-Blockchain conceptually is a type of database that’s decentralized and distributed. What this means is that, contrary to the traditional databases which are controlled by one single entity, blockchain databases are distributed among a group of nodes. Every transaction that is performed is maintained by every node individually, giving it certain advantages over centralized databases.
-
-The rise of Bitcoin’s popularity has been the primary reason why Blockchain has become the new buzzword. Since 2013, the general interest in blockchain has risen multifold.
-
-
-
-
-While blockchain is not an absolute solution to problems in the existing system, there’s a lot of merit in considering it for specific business processes. We list the factors that should influence your choice of a database system for your business:
-
-## Disintermediation / shared control
-
-Disintermediation is the biggest selling point of blockchain. Removing the intermediaries and the need for an administrator in any process makes it a lot faster. Authorization and execution of every transaction happens via a peer-to-peer system instead of central administrator. The nodes of the blockchain individually execute transactions, a consensus is reached and the transaction is recorded.
-
-**Why would you need disintermediation**
-
-The biggest drawback of a mediated process is the involvement and dependency on the middleman. Taking an example of banks, people entrust their data with banks. Every transaction needs to be processes and approved by the bank. Banks need to ensure that the data is always up-to-date and maintained properly. The investment to maintain this data is huge.
-
-Blockchain offers a method to remove such middleman. Imagine being able to transfer money without depending on your bank’s process.
-
-Disruption in a market is closely related to disintermediation. Uber is the world’s biggest network of taxi’s without owning a single car. For a user, the abstract view of opening an app to book a taxi nearby closely resembles a peer-to-peer network consisting of service providers and service consumers. AirBnB is another such example.
-
-## High Fault Tolerance
-
-Systems built on blockchain are extremely robust. Every transaction is individually processed by every node in the blockchain. This redundancy of data removed dependency on any single node. So if you have a blockchain of 10 different nodes, even if 5 of them shut down due to technical glitches or power outage, the system works smoothly without the need of immediate technical support.
-
-Centralized databases also aim to provide robust systems by creating backups which are reverted to in case of outage. But ensuring robustness in centralized databases is rather expensive due to the infrastructure required and the technical team required to maintain it.
-
-Blockchains are designed to allow addition of nodes as required. They also have inherent processes to make sure that every node is up to date. And the nodes can run on commodity hardware. So if your business heavily relies on the robustness of data, you’d might want to consider using a blockchain based system rather than a traditional centralized database. The same reason makes blockchain very attractive while [developing software for financial services](/financial-software-development-company/).
-
-While blockchains seem like the perfect database system to implement for any business type, **there are a few tradeoffs**.
-
-## Performance
-
-Blockchain systems by design, are more complex and slower than other types of database systems. Redundancy, requiring every node to individually process a transaction, makes it rather slow. Blockchains also need to rely on public-private cryptographic mechanisms, when propagating a transaction from one node to another. Basically, every single transaction has to verified individually to maintain order, compared to a central database system, where once a connection is established – subsequent transactions don’t need individual verification.
-Implementing blockchain requires a lot more complex implementation and is comparatively slower process.
-
-## Confidentiality
-
-Every node in a blockchain database has a complete view of the current state. This is the only way that each node can individually verify a transaction. Of course, there are cryptographic techniques in place to ensure robustness and privacy. But having a centrally located database with explicit granting of read/write access makes for a more confidential database. There are processes being designed to make blockchains more confidential, but until it becomes a commoditized practice, a centralized database system is a better choice if you need absolute confidentiality.
-
-Blockchain is still a nascent technology compared to the existing database systems. Until this technology becomes commoditized, you’ll need to rely on experts (which are still few in number) to help you it. While there are a lot of companies replacing their current systems with a blockchain, it’s still not mainstream. Codebrahma is an expert [Blockchain application development company](/serviceblockchain-development-company). To fully understand the scope and limitations of this technology for your business, you’re welcome to[ drop us a message.](/contact)
diff --git a/posts/implementing-upsert-in-rails/implementing-upsert-in-rails.md b/posts/implementing-upsert-in-rails/implementing-upsert-in-rails.md
deleted file mode 100644
index ab44b15..0000000
--- a/posts/implementing-upsert-in-rails/implementing-upsert-in-rails.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Implementing Upsert in Rails'
-date: 2014-08-01
-featuredpost: false
-description: >-
- Tutorial on implementing upserts in rails. An upsert is update or insert. Upsert in database terms refers to an operation which should insert a row into a database table if it doesn’t not already exist, or update it if it does.
-author: Nithin Krishna
-link: /implementing-upsert-in-rails
-category:
-- Tutorial
-tags:
-- Ruby on rails development
-- upsert in rails
----
-
-An upsert is ```update``` or ```insert```. Upsert in database terms refers to an operation which should insert a row into a database table if it doesn’t not already exist, or update it if it does. One can implement this function in Rails by writing ```__anActiveRecordExtension__```. This will allow you to call the upsert method on any model.
-
-## The ActiveRecordExtension
-
-1. Create a file ```active_record_extension```.rb in ```app/extensions```.
-```ruby
-module ActiveRecordExtension
- extend ActiveSupport::Concern
-
- #All extensions go here.
-
- def self.upsert(attributes)
- #Upsert implementation goes here.
- end
-end
-
-ActiveRecord::Base.send(:include, ActiveRecordExtension)
-```
-2. Set up an initializer ```extenstions.rb``` in ```config/initializers``` which initializes your extension.
-```ruby
-require "active_record_extension"
-```
-
-* * *
-
-As I see it there are two ways to implement upsert. Lets look at both and run through some numbers.
-
-## 1. Playing it safe
-```ruby
-def upsert(attributes)
- where(:primary_key => attributes['primary_key']).
- first_or_initialize.
- update(attributes)
-end
-```
-
-## 2. Rescue from failure
-```ruby
-def upsert(attributes)
- begin
- create(attributes)
- rescue ActiveRecord::RecordNotUnique, PG::UniqueViolation => e
- find_by_primary_key(attributes['primary_key']).
- update(attributes)
- end
-end
-```
-
-So just after looking at the code, you’d notice that the first implementation makes 2 queries everytime regardless of whether the record is present or not. The second implementation makes 1 query when the record is not present, but3 queries if the record is present.
-
-## Some numbers
-
-Ideally an ```INSERT``` or ```UPDATE``` query takes around 100ms. However I’m stubbing the ```create```, ```update``` and ```where``` methods with ```sleep(0.00001)``` for benchmarking. Actual numbers will be 10,000 times higher.
-
-```n = 5000```
-
-```sql
-case | user | system | total | real
-------------------------------------------------------------------------------
- 1 | new-record-upsert-1 | 1.020000 | 0.050000 | 1.070000 (1.232924)
- 2 | new-record-upsert-2 | 0.020000 | 0.020000 | 0.040000 (0.098955)
- 3 | existing-record-upsert-1 | 0.890000 | 0.060000 | 0.950000 (1.098148)
- 4 | existing-record-upsert-2 | 1.100000 | 0.070000 | 1.170000 (1.384870)
- 5 | random-upsert-1 | 1.010000 | 0.150000 | 1.160000 (1.311646)
- 6 | random-upsert-2 | 0.560000 | 0.060000 | 0.620000 (0.764272)
-```
-The numbers seem to suggest that __Implementation#2__ is faster. The best case scenario is __37%__ faster while the worst case is only __18%__ slower. Even when best/worst case scenarios are randomized __Implementation#2__ wins hands down.
-
-Gist: [upsert.rb](https://gist.github.com/nithinkrishna/549fa9d7213485cad392)
-
-Refrences: [nithinkrishna.github.io](http://nithinkrishna.github.io/2014-08-01-upsert-implementation-in-rails/)
\ No newline at end of file
diff --git a/posts/important-metrics-matter-app/2019-04-5-The-Most-Important-Metrics-That-Matter-for-Your-App.md b/posts/important-metrics-matter-app/2019-04-5-The-Most-Important-Metrics-That-Matter-for-Your-App.md
deleted file mode 100644
index aa439b6..0000000
--- a/posts/important-metrics-matter-app/2019-04-5-The-Most-Important-Metrics-That-Matter-for-Your-App.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'The Most Important Metrics That Matter for Your App'
-date: 2019-04-19
-featuredpost: false
-description: >-
- The world of apps is competitive today. Different companies are entering the marketplace every day competing for the same users. When it comes to measuring the success of your app, you need to keep a close eye on the right
-author: Anand Narayan
-category:
-- Development
-link: /important-metrics-matter-app
-tags:
-- business
-- metrics
-- marketing
-- react-native
----
-The world of apps is competitive today. Different companies are entering the marketplace every day competing for the same users. When it comes to measuring the success of your app, you need to keep a close eye on the right metrics. App developers already know there’s an unlimited library of metrics to choose from, but which ones actually matter when measuring success?
-
-Some app metrics are simply [vanity metrics](https://www.tableau.com/learn/articles/vanity-metrics). The name might sound harmless enough, but these vanity metrics just look good on paper. They don’t mean anything. You need to quickly identify the metrics that really make a difference when it comes to your functionality and user experience. Here’s a guide to the most important metrics that matter for your app in this day and age.
-
-
-
-__1.User Retention__
-
-One of the biggest metrics is related to your users. Not just how many users you have, but how many users you’re actually retaining. Think of the number of times you’ve downloaded a new app and never returned to it again. This is a common occurrence, and it’s a sign that you don’t have an effective app.
-
-Your user retention is defined as the percentage of users that keep returning to the application after their first visit. Most apps are only used once. You don’t want to become another statistic, so pay close attention to your loyal users to make sure they keep coming back.
-
-__2.Session Length__
-
-Now that you know how many users your app is retaining, how long are users spending on your app? The session length is the amount of time between the open and close of the app. From here, you can determine which users are spending the most time in your app, what’s keeping their attention, and what you can improve.
-
-The session length is particularly important when it comes to monetizing your app. Advertisers and sponsors are interested in knowing not only who is using your app, but how long they’re using it.
-
-__3.Average Revenue per User (ARPU)__
-
-Next, it’s time to talk about money. If your app isn’t creating revenue, what’s it doing? Your Average Revenue per User (ARPU) is how much revenue is earned per user of your app. You’ll calculate this by adding up all of your revenue from users alone and dividing it by your total number of active users.
-
-Once again, this is a great way to monitor the success of your app as well as to attract more revenue. If you don’t know how exactly your app is making money from users, you need to work on this process.
-
-
-
-__4.Conversion Rate__
-
-The conversion rate is a term you usually hear in the marketing world, but it’s relevant to app developers as well. There are a lot of ways users find new apps. With increasingly [endless ways to do Advanced Google Search](https://coforge.com/advanced-google-search-tips/) tips becoming available to everyday users, people are discovering new apps every which way. How many of these new users are actually turning into paying customers, however?
-
-Your conversion rate is calculated by adding up the number of leads and dividing it by the number of new customers within a single session of time. The goal, of course, is to increase your conversion rate.
-
-__5.Error Logs__
-
-Last but not least, you need to pay attention to your error logs. Application logging is something modern developers need to take seriously to prevent cyber attacks, increase security, and cut down on errors. Using a tool like [Papertrail](https://papertrailapp.com/) can automate this process, but it still will take ongoing maintenance from developers.
-
-Error logs are like breadcrumbs leading back to a problem. Without them, developers might waste time searching for the source of the problem when it could be outlined for them in the first place. Monitoring error logs and error reports are essential to the success of an app.
-
-__Final Thoughts__
-
-If you’re an app developer, it’s time to get serious about your metrics. While you shouldn’t waste time and resources on vanity metrics that do little to push your application further, these metrics above are the lifeline of any good application.
-
-How can you better serve your users? More importantly, how can you increase revenue from your most loyal users? These are the questions your metrics will answer for you.
diff --git a/posts/important-metrics-matter-app/images/important-metrics-img1.jpg b/posts/important-metrics-matter-app/images/important-metrics-img1.jpg
deleted file mode 100644
index 2a0ff10..0000000
Binary files a/posts/important-metrics-matter-app/images/important-metrics-img1.jpg and /dev/null differ
diff --git a/posts/important-metrics-matter-app/images/important-metrics-img2.jpg b/posts/important-metrics-matter-app/images/important-metrics-img2.jpg
deleted file mode 100644
index d8b41a9..0000000
Binary files a/posts/important-metrics-matter-app/images/important-metrics-img2.jpg and /dev/null differ
diff --git a/posts/intro-art-creating-successful-products/2017-06-08-Intro-to-the-Art-of-Creating-Successful-Products.md b/posts/intro-art-creating-successful-products/2017-06-08-Intro-to-the-Art-of-Creating-Successful-Products.md
deleted file mode 100644
index 4b82d8d..0000000
--- a/posts/intro-art-creating-successful-products/2017-06-08-Intro-to-the-Art-of-Creating-Successful-Products.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Intro to the Art of Creating Successful Products'
-date: 2017-06-08
-featuredpost: false
-description: >-
- Creating a successful product is seldom a matter of chance. In this article we discuss what it takes to create products that go on to become a hit.
-author: Anand Narayan
-link: /intro-art-creating-successful-products
-category:
-- Business
-tags:
-- mobile app
-- product development
-- web app
-- web application dev
----
-
-> ‘Creating a successful product is seldom a matter of chance.’
-
-Finding a problem that is big enough to be turned into a viable business requires more than just a personal pain point. Thinking backwards, it makes sense. A couple of guys realising that finding cabs is huge pain led to one of the most coveted internet business of all times. So much so that it gave birth to a whole industry segment (Uber for X).
-
-Then there are products that came into being because of a specific user habit. Photo sharing applications do not solve a pain point, yet Snapchat has become big enough to go public.
-
-With there so many factors in play, and none of them guarantee that your software product will be a resounding success – there are certain steps you can follow to increase your chances of success.
-
-## Find The Problem
-A successful product largely solves a pain point felt by a big number of people. Finding taxis and cabs, when you need them, was a problem shared by people all across the world. Ofcourse, different geographies have different constraints – some are more price sensitive, while some have infrastructure problems.
-
-Chancing upon a problem shared by a large number of people is good first step. Can technology be employed to solve it? If the answer is yes, then you’ve hit something solid.
-
-## Assess the Market
-Ecommerce is one of the biggest markets to be in. But think 10 years back, ordering off the internet was very niche. Most of the people did not even know that they could replace the headache of shopping with the luxury of clicking a few buttons and getting stuff delivered to their homes.
-
-You need to ensure that the problem your are trying to solve has a big enough market. This is slightly different from the previous point. If your product ‘disrupts’ a market – be prepared for a slow user adoption. On the contrary, if you’re launching a subscription based pet supply e-commerce store – finding users for your product will not be exceptionally hard.
-
-If the market that you’re targeting does not exist, it will take a lot of time, effort and resources to educate your customers and get them to try it out. Assess your target audience, the market size and serviceable market size before jumping the ship.
-
-## Lean Execution
-Ideas, more often than not, don’t hold any value unless driven by smart execution. Derek Sivers, founder of an music selling website said: Ideas are just multipliers of execution. Translated into simpler terms, this means that execution holds a higher value in the idea vs execution debate.
-
-Here’s a chart (credit: Crew) that puts it in perspective:
-
-
-
-We cannot emphasise the importance of good execution enough. There are times when ideas that you’d probably call weak have gone on to form million dollar businesses. And ofcourse, we are all familiar with brilliant ideas biting the dust because ‘something went wrong along the way’. Executing your idea the right way will be the single most important factor in ensuring your product’s success.
-
-We, at Codebrahma, help founders and entrepreneurs build [software products, mobile and web applications their users will love](/building-products-users-love)! If you need help with your application, drop us a line [here](/contact)!
\ No newline at end of file
diff --git a/posts/intro-art-creating-successful-products/images/htbaob-03-01.jpg b/posts/intro-art-creating-successful-products/images/htbaob-03-01.jpg
deleted file mode 100644
index ab145c9..0000000
Binary files a/posts/intro-art-creating-successful-products/images/htbaob-03-01.jpg and /dev/null differ
diff --git "a/posts/intro-to-gis-and-application/2016-11-22-A-Intro -GIS-And-It\342\200\231s-Application.md" "b/posts/intro-to-gis-and-application/2016-11-22-A-Intro -GIS-And-It\342\200\231s-Application.md"
deleted file mode 100644
index 438063b..0000000
--- "a/posts/intro-to-gis-and-application/2016-11-22-A-Intro -GIS-And-It\342\200\231s-Application.md"
+++ /dev/null
@@ -1,193 +0,0 @@
----
-templateKey: "blog-post"
-title: "A Basic Intro To GIS And It’s Application"
-date: 2016-11-22
-link: /intro-to-gis-and-application
-featuredpost: false
-description: >-
- A quick started guide for anyone looking to get into Geographic Information Systems (GIS). Explanation of related terms and a hands on project. Read on!
-keywords:
-- intro to GIS
-- geographic information systems
-- gis basics
-author: Pritoj Singh
-category:
-- Tutorial
-tags:
- - postgis
- - postgres
----
-
-_A quick starter guide for anyone looking to enter into GIS (geographic information system)_
-
-I personally have always been attracted to GIS systems. They seemed like one of those magical applications, feeding on a bunch of boring data and churning out awesome visualizations. But I’ve been hesitant to try it out, all the jargon – mercator projections, GDAL, QGIS, making it all the more harder. Until recently, I got a chance to work on a project that was based on GIS systems, involving in-store analytics for brick and mortar shops. It was a great learning experience – trying out different projections and visualizations, just playing around with data.
-
-This article is my attempt to help all those looking to get into GIS, and I’d love your feedback in the comments below.
-
-A simple Google search on GIS will give you this: “A geographic information system (GIS) is a computer system for capturing, storing, checking, and displaying data related to positions on Earth’s surface. GIS can show many different kinds of data on one map. This enables people to more easily see, analyze, and understand patterns and relationships.”
-
-Kinda neat, right? So let’s get on with the basics:
-
-## Projections
-
-The first thing you need to know about, the one which all the tutorials I read seemed to miss was Projections. Simply put, Projections are a way to represent the surface of a 3D Globe on a 2D map. Why is it such a big deal? Well, let see an example:
-
-
-Mercator Projection
-
-Look at this image. Most notably, the huge white area at the top-left called Greenland and the country with the blue dot on the bottom right, India.
-
-Which one of the two seems bigger?
-
-_Hint:_
-Area of Greenland : 2.166 million km²
-Area of India : 3.287 million km²
-
-The problem is, if I assume that the surface of the earth is like a wrapper and try to spread it on a piece of paper, it looks like this :
-
-
-Source: https://en.wikipedia.org/wiki/File:Goode_homolosine_projection_SW.jpg
-
-So, some wise people came up with a way to remove those empty spaces. The most common of those is known as the [Mercator Projection](https://en.wikipedia.org/wiki/Mercator_projection). It’s just a different way to fill in those empty spaces. There are a bunch of different projections which we use but most of this article will be about Mercator. The downside or Mercator, a country almost 1.5 times bigger than another country in actuality, appears way smaller.
-
-## Vector vs Raster
-
-Most of you would already be familiar with the concept of a raster and vector images. But, we’ll give it a quick go through.
-
-When you try to zoom in on a picture you clicked on your phone, it starts getting blurry after a certain point. That’s because images are normally rasters. Essentially a raster image is a pixel map, with each pixel coloured in a single colour. So when you zoom in, the pixel size increases and the images start getting blurry. You see that image for what it really is: a bunch of coloured dots.
-
-
-
-Vector data on the other hand is not pixels. It has definitions. Definitions of how a shape is made. Say you want a point, you define a point, you want a line you define a line, you want a polygon, you define a polygon.
-
-No matter how much you zoom in – a vector image will never get blurry.
-
-Vector data has been used in games for a long time, now we’ve gotten better at processing it quickly.
-
-
-Source: www.showbizgeeks.com
-
-## GeoJSON, TopoJSON, WKB, WKT
-
-
-
-You know how a bunch of friends get together and there’s one guy who calls football, soccer (or vice versa) or how some people just refuse to use the metric system? Well, this is essentially the same scenario. These are just various forms of representing and storing spatial data.
-
-
-https://xkcd.com/927/
-
-If you’re really interested you can read this article to get to know ALL THE FORMATS. For the purpose of this article, we’ll stick with GeoJSON and Shapefiles only.
-
-## Enough terms, get them pretty maps!
-
-Very soon, just need the right buildup! 🙂
-
-In essence, all vector GIS data is represented as either
-
-1. Points
-2. Lines
-3. Polygons
-4. Groups/Collections of such points
- There are more. You can learn a lot more about [GeoJSON here.](http://www.macwright.org/2015/03/23/geojson-second-bite.html)
-
-So before we get to the them awesome maps, we need to be able to define them. Say you want to show the inside of your room. How can you show it? Let’s consider a top-down view of your house. Now take your house and put it on an x-y plane(Cartesian). Place the top-left corner of your house at (0,0). I’ll assume your room is a square.
-
-
-**Going step by step:**
-Now since the room is the universe in this case, you don’t need to define it. So let’s start with the beer bottle. That bottle is at a point, the point where you left it last night (lazy much?). That point is (1,-1). The bottle is a feature in your representation of the room. So in GeoJSON that bottle can be described as
-
-```json
-{
- “type”: “Feature”,
- “geometry”: {“type”: “Point”, “coordinates”: [1,-1]},
- “properties”: {“name”: “Beer Bottle”}
-}
-```
-
-Now let’s move on to the door. Since the door is a line we represent it as such.
-
-```json
-{
- “type”: “Feature”,
- “geometry”: {
- “type”: “LineString”,
- “coordinates”: [
- [0, -10],
- [3, -10]
- ]
- },
- “properties”: {
- “name”: “Door”
- }
-}
-```
-
-Now the bed
-
-```json
-{
- “type”: “Feature”,
- “geometry”: {
- “type”: “Polygon”,
- “coordinates”: [
- [4, 0],
- [3, -7],
- [10, -7],
- [10, 0],
- [4, 0]
- ]
- },
- “properties”: {
- “name”: “Bed”
- }
-}
-```
-
-Now, after the crazy party last night – you wake up in the morning only to find a big hole in your bed. Now you want to be as faithful to the diagram as possible but you don’t want to specify what that place is for. Also that hole is still part of the bed. Well fear not, for holes are an integral part of a polygon.
-
-```json
-{
- “type”: “Feature”,
- “geometry”: {
- “type”: “Polygon”,
- “coordinates”: [
- [
- [4, 0],
- [3, -7],
- [10, -7],
- [10, 0],
- [4, 0]
- ],
- //Hole definition
- [
- [5, -1],
- [5, -2],
- [6, -2],
- [6, -1],
- [5, -1]
- ]
- ]
- },
- “properties”: {
- “name”: “Bed”
- }
-}
-```
-
-> The second array is basically defining where the damage was done. I’m sure with these basic building blocks you can now create a definition of the entire map.
-
-[Here’s the gist ](https://gist.github.com/Pritoj/1dbf56c73bd6086b35370b3eaa40d30a)for a quick reference.
-
-For those of you who did see the gist, picture looked a bit different? That map doesn’t look anything like what you thought it would!
-
-Well, here’s the reason. Remember that projection stuff we were talking about? Github thought this was just another lat long type file and displayed it as is.
-
-## Parting thoughts
-
-I hope this was an engaging and entertaining post for you guys. I don’t think this would make your life with GIS any easier, but I believe you’d be better equipped to understand what this system is and possibly delve deeper into it. Comments are always welcome!
-
-Helpful links:
-
-1. If you’re looking for more details on GIS, t[he first google](http://docs.qgis.org/2.6/en/docs/gentle_gis_introduction/) result is spot on!
-2. [The sub-reddit](https://www.reddit.com/r/gis/) for GIS is really helpful when it comes to questions.
-3. [QGIS](https://medium.com/r/?url=http%3A%2F%2Fwww.qgis.org%2Fen%2Fsite%2F) is also amazing if you want to play around with geographic data.
diff --git a/posts/intro-to-gis-and-application/images/1-9nMBMt-OugnruBr_M-WuEQ.png b/posts/intro-to-gis-and-application/images/1-9nMBMt-OugnruBr_M-WuEQ.png
deleted file mode 100644
index bd6e47a..0000000
Binary files a/posts/intro-to-gis-and-application/images/1-9nMBMt-OugnruBr_M-WuEQ.png and /dev/null differ
diff --git a/posts/intro-to-gis-and-application/images/1-JqU5S2zjdppYCvwKeIeA6A.png b/posts/intro-to-gis-and-application/images/1-JqU5S2zjdppYCvwKeIeA6A.png
deleted file mode 100644
index cf5cf9b..0000000
Binary files a/posts/intro-to-gis-and-application/images/1-JqU5S2zjdppYCvwKeIeA6A.png and /dev/null differ
diff --git a/posts/intro-to-gis-and-application/images/1-NeBSwyJifZL9gOGwX4Ln_A.png b/posts/intro-to-gis-and-application/images/1-NeBSwyJifZL9gOGwX4Ln_A.png
deleted file mode 100644
index 39d6bf4..0000000
Binary files a/posts/intro-to-gis-and-application/images/1-NeBSwyJifZL9gOGwX4Ln_A.png and /dev/null differ
diff --git a/posts/intro-to-gis-and-application/images/1-R1qFw9Xu0Xq5G8adbBWmDQ.png b/posts/intro-to-gis-and-application/images/1-R1qFw9Xu0Xq5G8adbBWmDQ.png
deleted file mode 100644
index 8b4cfe1..0000000
Binary files a/posts/intro-to-gis-and-application/images/1-R1qFw9Xu0Xq5G8adbBWmDQ.png and /dev/null differ
diff --git a/posts/intro-to-gis-and-application/images/1-RjyvtEMuCUCHAE15tfzh3g.png b/posts/intro-to-gis-and-application/images/1-RjyvtEMuCUCHAE15tfzh3g.png
deleted file mode 100644
index de452e2..0000000
Binary files a/posts/intro-to-gis-and-application/images/1-RjyvtEMuCUCHAE15tfzh3g.png and /dev/null differ
diff --git a/posts/intro-to-gis-and-application/images/1-if5Ck7COp9fC_s1TN7BwXw.png b/posts/intro-to-gis-and-application/images/1-if5Ck7COp9fC_s1TN7BwXw.png
deleted file mode 100644
index ffefc58..0000000
Binary files a/posts/intro-to-gis-and-application/images/1-if5Ck7COp9fC_s1TN7BwXw.png and /dev/null differ
diff --git a/posts/intro-to-gis-and-application/images/1-wHPxqlCeWm0JH6zvYYFKbQ.png b/posts/intro-to-gis-and-application/images/1-wHPxqlCeWm0JH6zvYYFKbQ.png
deleted file mode 100644
index 8935010..0000000
Binary files a/posts/intro-to-gis-and-application/images/1-wHPxqlCeWm0JH6zvYYFKbQ.png and /dev/null differ
diff --git a/posts/introduction-p2p-lending-marketplace/2017-04-29-INTRODUCTION-TO-P2P-LENDING-MARKETPLACE.md b/posts/introduction-p2p-lending-marketplace/2017-04-29-INTRODUCTION-TO-P2P-LENDING-MARKETPLACE.md
deleted file mode 100644
index 06667cb..0000000
--- a/posts/introduction-p2p-lending-marketplace/2017-04-29-INTRODUCTION-TO-P2P-LENDING-MARKETPLACE.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'INTRODUCTION TO P2P LENDING MARKETPLACE'
-date: 2017-04-29
-featuredpost: false
-description: >-
- P2P lending or Peer to Peer lending is the practice of borrowing money through online platforms that match borrowers with lenders. It’s a popular alternative to the more traditional practice of borrowing money from banks and non-banking financial institutions (NBFIs).
-link: /introduction-p2p-lending-marketplace
-category:
-- Business
-tags:
-- Fintech
-- fintech software
-- p2p lending
-- p2p lending marketplace
-- peer to peer lending
-- peer to peer lending marketplace
-author: Anand Narayan
----
-P2P lending or Peer to Peer lending is the practice of borrowing money through online platforms that match borrowers with lenders. It’s a popular alternative to the more traditional practice of borrowing money from banks and non-banking financial institutions (NBFIs). One of the biggest advantages of using an [online P2P lending platform](/financial-software-development-company/)is that the loans are usually cheaper as the platforms operate with lower overheads and software powered automation. The P2P lenders charge money for the platform and doing credit checks for borrowers.
-
-## How Does P2P Lending Work
-With P2P lending, it’s not the company operating the marketplace that lends money, but people interested in ‘investing’ their money do. The platform acts as an intermediary between the borrowers and lenders.
-
-Technically, the P2P lending platform has two users:
-
-__Borrowers__
-__Lenders__
-
-The lenders register on the platform, and complete a verification step to become a verified lenders. They, then decide the amount they want to invest and transfer that amount to the platform. The money is divided up into units – termed generally as ‘Notes’. The value of the unit varies with the platform. So, if a platform decides the unit note to be valued at $10 and an investor decides to invest $10,000 she’ll end up with 1000 notes to invest in borrowers.
-
-Borrowers, after registering on the P2P lending platform, go through a verification process and a credit check. A credit check is performed to identify the risk involved with investing in the said borrower. The credit check outcome determines the rate of interest for the borrower.
-
-One loan is typically funded by multiple investors. An investor willing to invest 1000 notes can choose to fund 10 different loans with 100 notes each or can mix and match the amount with loans. This diversification of portfolio works in the investor’s favor by reducing the risk. It’s a manifestation of the classic proverb – “don’t put all your eggs in one basket”.
-
-## Creditworthiness In P2P lending platforms
-One of the most important tasks for the P2P lending marketplace is to be able to determine, as accurately as possible, the creditworthiness of borrowers. The creditworthiness of an applicant in the United States is determined by the credit score, the FICO score being the most popular credit scoring model. Furthermore, there are three different credit rating agencies in the US – Equifax, Experian and TransUnion.
-
-P2P lending platforms tie up with a 3rd party credit agency to pull in the a borrower’s credit score. Then depending on the business model, they might consider only the credit agency’s score or may compute their own scores using additional data. A lot of P2P lending agencies include the social data as well as other publicly available data in their credit report. Churing the numbers through their own algorithms, they decide whether a borrower is fit for giving loan to and at what interest.
-
-The rate of interest given to a borrower varies with their credit score, amount applied for and the period of loan. Similarly, a lender is offered a higher rate of interest for their loan, if they choose to invest with borrowers having lower credit score. High risk equals higher reward.
-
-## Market and Way Forward
-The P2P lending market is relatively new. One of the first P2P platforms – Zopa, was founded in the UK in the year 2005. Prosper and Lending Club were founded in the United States in the year 2006 and 2007 respectively.
-
-The global financial crisis of 2008 and 2009 played a major role in shaping the wave of financial disruption through technology, referred to as Fintech. Major losses suffered by banks resulted in reduced loan disbursements with heavier scrutinies and tighter processes. The exposed fragility of the traditional banks went on to induce a general dissatisfaction amongst the public. All this opened gateways for smaller companies with superior technology to move in and promote the idea of alternate financing. P2P lending is a big part of alternate financing.
-
-According to a PwC report, the P2P lending platforms in the United States issued loans worth $ 5.5 Billion approximately. The global P2P market was estimated at $26.16 Billion in the year 2015. Transparency Market Research predicts the market to grow by CAGR of 48.2% year on year, reaching a whopping $897.85 Billion by the year 2024. Research and Markets expects the P2P market to grow at a CAGR of 53.06% between the years 2016 and 2020. Morgan Stanely predicts the market to be valued at $490 Billion by 2020.
-
-While the numbers predicted by different agencies vary – the key takeaway is that the P2P lending market is poised to grow at a breakneck speed. It already is one of the fastest growing sectors within the Fintech market.
-
-
-
-Technology disruption of the financial market is one of the most exciting and interesting trends to follow. Innovation drives change that’s worthy of impacting millions of people. P2P lending is one such market, and we can’t be more excited to see how how it shapes up.
-
-We wokred with some of the biggest names in the Fintech industry, and helped them set up the technology that impacts millions. Harmoney – the leading P2P lending marketplace in New Zealand in one of our case studies.
-
-
-
-If you’re looking to enter the P2P market and are looking for [financial software consultants](/financial-software-development-company/), we’d love to talk to you!
-
diff --git a/posts/introduction-p2p-lending-marketplace/images/20150509_LDC934.png b/posts/introduction-p2p-lending-marketplace/images/20150509_LDC934.png
deleted file mode 100644
index ea765dd..0000000
Binary files a/posts/introduction-p2p-lending-marketplace/images/20150509_LDC934.png and /dev/null differ
diff --git a/posts/introduction-p2p-lending-marketplace/images/P2P-lending.png b/posts/introduction-p2p-lending-marketplace/images/P2P-lending.png
deleted file mode 100644
index c34ca8a..0000000
Binary files a/posts/introduction-p2p-lending-marketplace/images/P2P-lending.png and /dev/null differ
diff --git a/posts/introduction-to-cryptocurrencies/2016-08-17-Introduction-to-Cryptocurrencies.md b/posts/introduction-to-cryptocurrencies/2016-08-17-Introduction-to-Cryptocurrencies.md
deleted file mode 100644
index 9b359a5..0000000
--- a/posts/introduction-to-cryptocurrencies/2016-08-17-Introduction-to-Cryptocurrencies.md
+++ /dev/null
@@ -1,156 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Introduction to Cryptocurrencies'
-date: 2016-08-17
-featuredpost: false
-category:
-- Business
-description: >-
- This blog post takes a simplified look at cryptocurrencies like bitcoin to help everyone understand what it is, how it works, and its implications.
-keywords:
-- cryptocurrencies
-- bitcoins
-- fintech
-author: Tarun Batra
-link: /introduction-to-cryptocurrencies
-tags:
-- Bitcoins
-- Cryptocurrency
-- Fintech
----
-Unless you’ve been living under a rock, you’d have heard about cryptocurrencies or Bitcoin atleast. There’s a lot of buzz around it, but disproportionately less clarity regarding what it actually is. In this article we’ll introduce ourselves to the fundamental principles of cryptocurrencies, clear the mist of confusion which surrounds them, and debunking some myths along the way too.
-
-It’s human nature to compare everything new with something familiar. In case of cryptocurrencies, it’s the fiat money. Money is so fundamental to our daily lives that we always manage to see through them, and seldom do we try to understand the reason we need it and the unique purpose the serve.
-
-> Look at those paper and plastic sheets, do you feel they’re worth it?
-
-Now I’m not an economist, but I know few common principles which make currencies what they are.
-
-# Principles governing currencies
-## Demand and supply
-Almost every financial and economic activity is affected by this principle. The more the ratio of demand and supply of a commodity, more is it’s value.
-
-## Market sentiments
-Market sentiments greatly effect the value of the currencies, stocks and commodities. If the investors of a company think the company shares are going to be worth less, they are worth less.
-
-## Trust
-Trust is essential for virtually all economic activity. Banknotes often have a __promissory clause__ which reads like this:
-
-
-without any gold or other precious resources to actually back that claim. (Earlier they used to back currency value to something like gold. Though it’s discontinued now, but the idea is same).
-
-# Why cryptocurrencies?
-So we already have things in place to keep the system running, why do we need these cryptocurrencies? What problems do they solve, if any? Well the features of fiat money are also it’s limitations.
-
-1. The banks represent __a single point of control__ which can deem a currency illegitimate, refuting our claims to our wealth.
-2. Apart from being a single point of control, they also represent __a single point of failure__. Banks have failed in the past, and can certainly fail in the future due to various reasons, which puts our wealth at risk.
-
-3. We have to trust the system with our wealth without any satisfactory assurance against a fraud, intentional or otherwise.
-
-Cryptocurrenies are an attempt towards liberating the monetary system, something so essential to our lives, from these issues, in a way that one can be in absolute control of one’s wealth without trusting the system.
-
-Any discussion about cryptocurrencies is incomplete without __Bitcoin__. Bitcoin is to cryptocurrencies what PowerPoint is to presentation programs, Ubuntu is to Linux and Xerox is to photocopying. We will try to understand cryptocurrencies with a case study of Bitcoin, which is not very much different from other cryptocurrencies.
-
-# Bitcoin
-Bitcoin is one of the first and certainly the most popular cryptocurrency, created by __Satoshi Nakamoto__(a pseudonym) in 2009. Many of the challenges which Bitcoin faced were first of their kind and success of Bitcoin paved the way for other cryptocurrencies.
-
-Let’s see some of these challenges:
-
-## Eliminating central authority
-Bitcoin protocol is based on a Peer-to-peer (P2P) network to eliminate the need of any central authority, just like how BitTorrent protocol, based on a P2P network, eliminated the need of any central authority for file sharing.
-
-## Eliminating trust
-When we transfer money through banks, we trust them to do so. But without any central authority, or nodes which one could trust, it was necessary to create a trust-less system. Bitcoin used __blockchains__ to achieve this. Blockchains are a type of distributed database which lives on ever node and are used as immutable public ledger for the transactions. Blockchains are made of blocks which further consist of bitcoin transactions. Blockchains are similar to a linked list of blocks where every block refer to it’s parent block and this fact makes old transactions very secure and incorruptible as we’ll see later.
-
-Blockchains, themselves are greatly hyped and are considered the biggest achievement of Bitcoin, as the idea can be used in various other industries to create trust-less systems.
-
-
-
-## Value of bitcoins
-If there’s no central authority, who decides the value of the currency?
-
-Well, as we discussed earlier, the golden rule of __demand and supply__ comes to play here too. Satoshi made the protocol in such a way that the maximum number of bitcoins that can ever be generated (minted) is fixed at __21 million__.
-
-
-
-__Market sentiments__ also play a vital role. Recently bitcoin prices plunged when Bitfinex, a Hong Kong based cryptocurrecncy exchange was hacked and $65 million worth bitcoins were stolen.
-
-## Verification of transactions
-Banks have interest in processing only valid transactions and keeping fraudulent transactions out of the system. This role is played by __miners__ collectively.
-
-> Miners are the nodes which generate blocks for blockchains by verifying the unverified transactions and including them in their block.
-
-The verification is done by adding __Proof of work__ (POW) to the block data. Block data generally contains the transactions which form the block including the coinbase transaction and the hash of previous block.
-
-> Proof of work is a piece of data which is difficult to produce but easy to verify.
-
-It’s generally the hash of block data with n number of leading zeroes. Miners append a value called __nonce__ to the block data to change it’s hash value and keep changing the nonce until the desired hash is found.
-
-So if the block data is ```Hello, world!```, and the number of zeroes required is 4, it takes 4251 tries (nonce is incremented from 0) to find the desired hash:
-```
- 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9.
-```
-Now anyone can verify that this is a valid hash of ```Hello, world!4251```, but if someone tries to change a transaction in the block, the hash will be invalidated, and a new POW has to be generated, which is impractical.
-
-We saw, finding POW can be a complex and a resource hungry process. So why do miners do that? Miners are incentivized for every block they generate. At the end of the block, the miner adds a special transaction called __coinbase transaction__ which writes off a certain amount of bitcoins to the miner’s address from thin air, and that’s how new bitcoins are minted. Miners also get some money from the transactions, called __transaction fee__. The block, which is first to arrive, gets placed in blockchain, and other miners have to scrap their work, and start again after syncing with the blockchain.
-
-## Double spending
-Let’s say Alice bought something from Bob, and paid him in bitcoins. What if:
-
-Alice broadcasts the transaction, but alters the transaction in her own copy of blockchain to pay herself instead of Bob.
-Upon the verification of the transaction by the network, Bob ships the item.
-Now Alice broadcasts her own version of the blockchain.
-> Which version of blockchain should the nodes trust?
-
-If Alice manages to convince the nodes that her version (without Bob’s transaction) is valid, she gets to __buy the item without paying anything__.
-
-Various elements of Bitcoin protocol come at play to stop this from happening.
-
-Bitcoin nodes __trust the longest blockchain__ and build their blocks on it. If Alice wants to invalidate the current longest blockchain, she has to re-generate the blocks after her fraudulent transaction at such a speed that her blockchain becomes the longest one. As long as most nodes in the network are honest (they should be, they’re getting paid for it!), Alice can’t corrupt the blockhain, and this is why we introduced blockhains as immutable public ledgers earlier in the article. The number of blocks a transaction is buried under, is called the __confirmations__ of that particular transaction. Most exchanges deem a transaction verified after 6 confirmations.
-
-> More the confirmations of a transaction, more difficult it is to alter it.
-
-## Anonymity
-Many people hail Bitcoin as an anonymous mode of payment. But the reality is quite the opposite. Every transaction made on Bitcoin is visible to everyone. Having said that, bitcoin transactions don’t necessarily link to the real identity of the user, but to a pseudonym, much like writing a book with a pen name. Thus, Bitcoin is __pseudonymous__.
-
-## Fun facts about Bitcoin
-The first block of the blockchain is called the Genesis Block. Every bitcoin in circulation is either derived from a coinbase transaction or the Genesis block. See how it looked like [here](https://blockexplorer.com/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f).
-
-Rewards from coinbase transactions are halved after every 210,000 transactions. In fact, the latest __halving event__ occurred recently on 9th July 2016, reducing the reward amount from BTC 25 to BTC 12.5. Check when’s the next halving event [here](http://www.coindesk.com/51-attacks-real-threat-bitcoin/).
-
-__51% attack__ is a largely feared attack in Bitcoin, where an attacker controls 51% of the computational resources of the network, allowing it to alter the “immutable” blockchain. It ain’t plain theory, Read about Bitcoin’s brush with it [here](http://www.coindesk.com/51-attacks-real-threat-bitcoin/).
-## Altcoins
-Cryptocurrencies other than Bitcoin are know as __altcoins__, or alternative to Bitcoin. Most of the altcoins are similar in principle to Bitcoin with some minor differences. [Litecoin](https://litecoin.org/), [Dogecoin](http://dogecoin.com/), [Namecoin](https://www.namecoin.org/) and Nxt are some prominent altcoins.
-
-The altcoins vary in terms of under lying principles. For example, [Primecoin](http://primecoin.io/) is a cryptocurrency which makes use of the vast amount of computational resources to find long chains of prime numbers which can contribute in advancement of cryptography as a science.
-
-[Ethereum](https://en.wikipedia.org/wiki/Ethereum) is a disruptive [blockchain-based platform](/financial-software-development-company), the highlight of which is __smart contracts__. Smart contracts are contracts enforced by computer code, instead of institutions set up by humans. This way, we can port whole economies and governments to digital ecosystem, let alone currencies. The possibilities are endless and out of the scope of this article.
-
-Cryptocurrencies also vary in terms of user friendliness. More popular ones, like Bitcoin are very user friendly, while others are not so.
-
-
-My bitcoin wallet app
-
-You can see stark difference in my bitcoin wallet app shown above, and my Ethereum wallet shown below.
-
-
-My Ethereum wallet
-
-## Conclusion
-Cryptocurrencies are really trending and have a lot of buzz. The future of cryptocurrencies is very promising. Many people have made a fortune out of cryptocurrencies, however they should not be looked merely as an investment. The ideas which these cryptocurrencies represent and the future possibilities they hold are of far greater value than their monetary value.
-
-If you’re thrilled and want to involve in bitcoins or cryptocurrencies in general, you may like the following links:
-
-Original [bitcoin paper](https://bitcoin.org/bitcoin.pdf) by Satoshi Nakamoto.
-
-[Shapeshift](https://shapeshift.io/) is a site to convert one cryptocurrency to another.
-
-[Poloniex](https://poloniex.com/) is an exchange / trading site for cryptocurrencies.
-
-[Coinbase](https://www.coinbase.com/) is the PayPal of cryptocurrencies.
-
-If you liked the article and feel generous, or just want to hone your newly acquired bitcoin skills, feel free to send me some bitcoins at the following address.
-
-17ULzN8PCaCtE16WKtBhMYc28DQxxt4ja
-
-
diff --git a/posts/introduction-to-cryptocurrencies/images/Promise-To-Pay-300x200.jpg b/posts/introduction-to-cryptocurrencies/images/Promise-To-Pay-300x200.jpg
deleted file mode 100644
index 3816bff..0000000
Binary files a/posts/introduction-to-cryptocurrencies/images/Promise-To-Pay-300x200.jpg and /dev/null differ
diff --git a/posts/introduction-to-cryptocurrencies/images/Screenshot-from-2016-08-16-00-26-23.png b/posts/introduction-to-cryptocurrencies/images/Screenshot-from-2016-08-16-00-26-23.png
deleted file mode 100644
index 39ab30e..0000000
Binary files a/posts/introduction-to-cryptocurrencies/images/Screenshot-from-2016-08-16-00-26-23.png and /dev/null differ
diff --git a/posts/introduction-to-cryptocurrencies/images/Screenshot-from-2016-08-16-00-35-21.png b/posts/introduction-to-cryptocurrencies/images/Screenshot-from-2016-08-16-00-35-21.png
deleted file mode 100644
index 8845311..0000000
Binary files a/posts/introduction-to-cryptocurrencies/images/Screenshot-from-2016-08-16-00-35-21.png and /dev/null differ
diff --git a/posts/introduction-to-cryptocurrencies/images/bank-failures-since-1865-with-text-boxes_large.png b/posts/introduction-to-cryptocurrencies/images/bank-failures-since-1865-with-text-boxes_large.png
deleted file mode 100644
index b4851a7..0000000
Binary files a/posts/introduction-to-cryptocurrencies/images/bank-failures-since-1865-with-text-boxes_large.png and /dev/null differ
diff --git a/posts/introduction-to-cryptocurrencies/images/blockchain.png b/posts/introduction-to-cryptocurrencies/images/blockchain.png
deleted file mode 100644
index 4b2437d..0000000
Binary files a/posts/introduction-to-cryptocurrencies/images/blockchain.png and /dev/null differ
diff --git a/posts/introduction-to-cryptocurrencies/images/coindesk-bpi-chart.png b/posts/introduction-to-cryptocurrencies/images/coindesk-bpi-chart.png
deleted file mode 100644
index 7c2e849..0000000
Binary files a/posts/introduction-to-cryptocurrencies/images/coindesk-bpi-chart.png and /dev/null differ
diff --git a/posts/introduction-to-cryptocurrencies/images/qr-1-150x150.png b/posts/introduction-to-cryptocurrencies/images/qr-1-150x150.png
deleted file mode 100644
index b22b76d..0000000
Binary files a/posts/introduction-to-cryptocurrencies/images/qr-1-150x150.png and /dev/null differ
diff --git a/posts/javascript-promises/javascript-promises.md b/posts/javascript-promises/javascript-promises.md
deleted file mode 100644
index 1dc68b8..0000000
--- a/posts/javascript-promises/javascript-promises.md
+++ /dev/null
@@ -1,198 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Javascript Promises'
-date: 2014-05-02
-featuredpost: false
-description: >-
- Explaining implementation of Javascript promises API
-author: Nithin Krishna
-link: /javascript-promises
-category:
-- Tutorial
-tags:
-- Javascript
-- web application development
----
-
-## Callback Hell?
-
-A **callback** is a block of code passed an an argument to a function, which can be executed by the function at a suitable time. There is nothing wrong with callbacks, but when you have conditions where you have multiple callbacks nested within each other, it becomes very messy.
-
-There is no way you can avoid such a condition, the asynchronous nature of javascript ensures that you often have multiple unknowns at some point in time.
-
-Let's dig into the problem. Consider I am writing an application where I have to find out all the restaurants within a km radius of the user's location, I write something like this.
-
-```js
-function getRestaurants(){
- navigator.geolocation.getCurrentPosition(function(position){
- $.get("http://myurl.com/getrestaurants",{
- coordinates: position
- }, function(restaurants){
- console.log(restaurants)
- },function(){
- console.log("Unable to process request")
- })
- }, function(){
- console.log("Unable to process request")
- })
-}
-```
-
-Fair enough? What if after I got the list of restaurants I needed to make another API call to order them based on rating. I'd do something like
-
-```js
-function getRestaurants() {
- navigator.geolocation.getCurrentPosition(
- function(position) {
- $.get(
- "http://myurl.com/getrestaurants",
- {
- coordinates: position,
- },
- function(restaurants) {
- console.log(restaurants)
- },
- function() {
- console.log("Unable to process request")
- }
- )
- },
- function() {
- console.log("Unable to process request")
- }
- )
-}
-```
-
-What if I'd have to make a 4rd API call. Pretty messy right?. Welcome to callback hell. Bwhahaha. You can name your callbacks and make your code more readable, But there is a better way of handling this situation.
-
-## Promises
-
-Before going into what they are all about, We'll see what will happen to our code when we use promises.
-
-```js
-function getRestaurants(){
- var getLocation = function(){
- var deferred = $q.defer();
- navigator
- .geolocation
- .getCurrentPosition(deferred.resolve, deferred.reject)
- retrun deferred.promise;
- }
-
- var getCollection = function(){
- var deferred = $q.defer();
- AJAX.get("http://myurl.com/getrestaurants",{
- coordinates: position.coords
- }, deferred.resolve, deferred.reject)
- retrun deferred.promise;
- }
-
- var processRestaurants = function(restaurants){
- console.log("Restaurants in your location " + restaurants)
- }
-
- getLocation()
- .then(getCollection)
- .then(processRestaurants)
-}
-```
-
-Cool Right? We are able to write asynchronous code in a synchronous manner. What if you had n nested callbacks, how would you handle that? Consider this example.
-
-```js
-function getData(){
- var api_call = function(url){
- var deferred = $q.defer()
- $http.get(url, deferred.resolve, deferred.reject)
- return deferred.promise
- }
- var aggregateData = function(results){
- var aggregatedData = []
- angular.forEach(results, function(result){
- aggregatedData.push(result.data)
- })
- return aggregatedData
- }
- var res = $q.all([
- api_call('organizations'),
- api_call('members'),
- api_call('projects'),
- api_call('collaborator')
- ]).then(aggregateData)
-
- return res;
-}
-```
-
-Though the time taken for the completion of each API call might varie, the resultant data array will be in the order of, the results from the functions which you pass to $q.all. This in an asynchronous environment is very powerful.
-
-Example
-
-## Getting Started with promises
-
-* A promise represents some value that is not known yet (i.e) a placeholder for unknown data.
-* A defered represents function that computes the promise.
-* A promise can be resolved or rejected.
-* Angular Js and Node Js have their own implementation of Promises. I've used the angular js implementation in the above examples.
-* There is no standard implementation for javascript promises you can build your own, if you like.
-* It's key to note that there might be subtle differences between implementations, they might differ by the number of state handlers per promise, or sometimes even performance but the basic idea is the same.
-
-## Implementing you own promise object
-
-This is a simple 10 minute implementation of a promise. The promise object maintains an array of pending callbacks. When ever the 'then' function is called, callbacks are pushed into this array. When the promise is resolved or rejected the corresponding set of callbacks are executed.
-
-```js
-var Promise = function(){
- this.pending = [];
-}
-
-Promise.prototype = {
- then: function(onResolve, onReject){
-
- this.pending.push({
- resolve: onResolve,
- reject: onReject
- })
-
- return this
- },
-
- resolve: function(data){
- this.then = function(reject, resolve){
- resolve && resolve(data)
- }
-
- this.executePending('resolve', data)
- },
-
- reject: function(data){
- this.then = function(reject, resolve){
- reject && reject(data)
- }
-
- this.executePending('reject', data)
- },
-
- executePending: function(type, data){
- var p, i = 0
- while (p = this.pending[i++]) {
- p[type] && p[type](data)
- }
-
- delete this.pending
- }
-}
-```
-
-Example:
-
-## But where?
-
-Everywhere. Cleanup your javascript code. Replace nested callbacks during sequential API calls, animations (etc) with promises. Promises are a great programming paradigm which have to be vigorously exploited.
-
-Refrences: [nithinkrishna.github.io][1]
-
-[1]: http://nithinkrishna.github.io/2014-05-02-Javascript-promises/
-
-
diff --git a/posts/make-online-store-scratch/2019-04-22-How-to-Make-an-Online-Store-From-Scratch.md b/posts/make-online-store-scratch/2019-04-22-How-to-Make-an-Online-Store-From-Scratch.md
deleted file mode 100644
index d4085ce..0000000
--- a/posts/make-online-store-scratch/2019-04-22-How-to-Make-an-Online-Store-From-Scratch.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'How to Make an Online Store From Scratch'
-date: 2019-04-22
-featuredpost: false
-description: >-
- E-commerce sales are fast gaining on traditional brick-and-mortar retail revenues. With the current trajectories, it’s only a matter of time before online sales surpass offline sales. It’s not hard to see why. Source Pixabay.com The Internet renders geographical distance and
-author: Anand Narayan
-link: /make-online-store-scratch
-category:
-- Business
-tags:
-- ecommerce
-- apps
----
-The Internet renders geographical distance and physical barriers irrelevant. As soon as an online store goes live, it has access to the [more than 4 billion internet](https://wearesocial.com/blog/2019/01/digital-2019-global-internet-use-accelerates) users around the world.
-
-Add to that the proliferation of the smartphone which has made browsing the world wide web more convenient than it has ever been. [Mobile internet users surpassed desktop users in 2016 ](https://techcrunch.com/2016/11/01/mobile-internet-use-passes-desktop-for-the-first-time-study-finds/)and that gap will only continue to grow. That can only be good news for online stores.
-
-So with the advantages of e-commerce pretty clear, now comes the hard part—how do you set up an online store from scratch? The following are the basic steps to help you do just that.
-
-1. You May Need a Business License
-
-An online store is at its core business so you may be required to obtain certain licenses in order to operate it legally. This may come as a bit of a surprise to some given the ease with which one can develop and launch an e-commerce website from virtually anywhere in the world without having to go through any government paperwork.
-
-Still, even though compliance enforcement may be weak, it’s the right thing to do. Remember that regulatory fines, penalties, and taxes don’t necessarily have an expiry date.
-
-It’s better to get everything in the clear from the get-go as opposed to getting slapped with censure as well as a massive fine (and perhaps even back taxes) when your online store has grown large and earned an enviable reputation. Even if the fine itself doesn’t collapse your business, the loss of reputation and the potential revocation of your operating license can do that.
-
-Work with an attorney to determine what specific licenses you require depending on the primary country of business and/or where the store is hosted.
-
-2. What Do You Want to Sell?
-
-By the time you are thinking about setting up an online store, chances are you already have a couple of products in mind you’d want to sell. Deciding which specific ones to put on your store isn’t easy though. Your choice largely depends on your short, medium and long term financial goals as well as how long you are willing to wait for the business to break even.
-
-Certain types of products are more likely to get your sales going from the start even though they may not have large profit margins per item. Examples include clothing and shoes. On the other hand, there are products that take longer to catch on but the margins are fairly large which can make the wait worth your while. Products that fall into this category include jewelry and high-end fashion.
-
-Make sure the product you choose is in the best interests of your store’s survivability, sustainability, and profitability.
-
-3. Bespoke Store of Off-the-Shelf?
-
-Your online store is the platform on which you will sell your product. Once you have a clear picture of what you want to sell, it’s time to design the website you’ll sell it on. You have three options.
-
-First, you could task a professional web developer to design a bespoke online store for you from the ground up. If you are not tech-savvy, this may seem like the most practical solution. You completely give the headache of building and maintaining the store to a third party. The drawback though is that it’s expensive both in the short and long-term. It also leaves you overly dependent on the developer.
-
-The second option is to use an e-commerce store builder like WooCommerce or Magento. You have to make arrangements for the underlying infrastructure (such as hosting servers and domain names) as well as build the e-commerce store itself. The main disadvantage is you have to be conversant with the platform and be a good programmer. In addition, [it can be hard to find a WooCommerce Support partner](https://www.brightvessel.com/find-best-woocommerce-support-partner/).
-
-The third alternative is going for a premade ready-to-go e-commerce website using platforms such as Shoplo that need only some basic customization to be ready for launch. While this allows you to go live in as little as an hour, the end product is rigid and difficult to migrate to another platform.
-
-
-Source [Pixabay.com](https://pixabay.com/photos/marketing-digital-marketing-office-3724798/)
-
-4. Set Up Payment
-
-Your online store can only be deemed successful if it’s raking in an ever increasing volume and value of sales. It’s therefore crucial that you put in place secure and safe avenues through which your customers will pay you.
-
-Starting by ensuring your site has an SSL certificate which makes it near impossible for a third party to intercept communication between your store and your customer. With that out of the way, add as many major payment channels as you can to cater to a broad range of customer preferences.
-
-At the minimum, your online store should allow payment via credit card, PayPal, Apple Pay, Bitcoin, Google Wallet, and AliPay. If you build your store with platforms such as WooCommerce, it can take you just 10 minutes to add each payment gateway.
-
-By applying these basic principles, your online store will be ready to accept and process your first sale.
-
-
\ No newline at end of file
diff --git a/posts/memory-management-with-swift/memory-management-with-swift.md b/posts/memory-management-with-swift/memory-management-with-swift.md
deleted file mode 100644
index 9f75b51..0000000
--- a/posts/memory-management-with-swift/memory-management-with-swift.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Memory Management with Swift'
-date: 2015-11-19
-featuredpost: false
-description: >-
- Learn about memory management using Apple's Swift programming language and Xcode, when building iOS apps. Contact us for iOS App Development services in bangalore.
-keywords:
-- iOS application development bangalore
-- iOS application developers bangalore
-- iOS
-- Swift
-- Apple
-- Memory
-- Management
-- Xcode
-- Instruments, ARC, Reference, Retain Cycles1
-author: Mohonish
-link: /memory-management-with-swift
-category:
-- Research and Articles
-tags:
-- Instruments
-- iOS
-- Memory management
-- Swift
-- XCode
----
-
-
-When taking the dive into the world of mobile computing, any developer will be faced with a lot of new challenges – One of the most significant would be the challenge of managing memory.
-
-Developing for mobile devices, having limited memory resources, one must be careful in maintaining the balance between what remains on our persistent database, and what remains loaded on live memory, all the while maintaining a silky smooth UI without compromising on app performance.
-
-Seems like a big task. And indeed it is. But a little knowledge in memory management techniques goes a long way when starting out on a mobile application project. Trust me when I say that prevention is definitely better than cure here.
-
-On iOS, managing memory efficiently is quite important as our apps are almost never allowed to take up a fair share of the maximum available memory. And even if your app treads closer to that limit, iOS will throw a couple of memory warnings before eventually terminating your application. App crashes are usually the #1 reason for it to be rejected on AppStore. But with the introduction of Swift, gone are the days of Objective-c where you have to get your hands dirty with memory very often.
-
-The following guide will be divided into three sections. Although I would suggest you to read sequentially through them, feel free to skip to the next section if you think so as this article will cover most of the common aspects and terminologies of memory management.
-
-1. Basics
-2. Debugging with Instruments
-3. Best Practices
-
-Before we can work with memory, we need to be clear about the basics. Let's start with ARC.
-
-**Automatic Reference Counting (ARC)** is a garbage collection technique used by Swift to manage the app's memory allocations. Whenever an object is created, ARC maintains a count of the number of references to that object. As long as that count is positive, the object and it's properties may be accessed by any of it's references and hence needs to remain in memory. But once the count becomes zero, it is clear that there are no active references to that object, i.e., it is not needed anymore. Hence the memory allocated for that object can be released immediately.
-
-To read further about how ARC is different from the conventional tracing garbage collection, read [this thread][1] from Apple's mailing lists.
-
-Now despite all it's advantages, the single biggest headache for ARC is Retain Cycles.
-
-There are two kinds of references that can be held upon an object – Strong and Weak. A **strong reference**, in simple terms, would be the normal kind of reference that would prevent ARC to deallocate an object as long as there are strong references to it. On the other hand, a **weak reference** do NOT prevent ARC from deallocating the referenced object. When an instance is deallocated, if there were weak references to that instance that are still being held, then ARC sets their values to nil.
-
-**Retain Cycles** occur when two objects hold strong references to each other. This prevents ARC from deallocating either of them even if they are not needed any more. Transitive relationships may also lead to retain cycles (A -> B -> C-> A) which is why they can be a pain to debug. Reference Cycles are prevented by setting the appropriate reference to weak. More on that later.
-
-Retain cycles are a common cause for memory leaks, i.e., when there is a block of allocated memory that is no longer needed and has no references to it.
-
-To err is human. And so in part 2, we will look into how you can debug your memory issues using the very useful Instruments Tool in Xcode.
-
-Hope you found this article useful. Drop in a comment if you have any questions.
-
-References:
-[developer.apple.com][2]
-
-[1]: http://lists.apple.com/archives/objc-language/2011/Jun/msg00013.html
-[2]: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html
-
-
\ No newline at end of file
diff --git a/posts/meteor-publications-and-subscriptions/2016-07-21-Meteor-Publications-and-Subscriptions.md b/posts/meteor-publications-and-subscriptions/2016-07-21-Meteor-Publications-and-Subscriptions.md
deleted file mode 100644
index 5f944d4..0000000
--- a/posts/meteor-publications-and-subscriptions/2016-07-21-Meteor-Publications-and-Subscriptions.md
+++ /dev/null
@@ -1,219 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Meteor Publications and Subscriptions'
-date: 2017-02-14
-featuredpost: false
-description: >-
- In this blog specifically, we're going to talk about meteor publications and subscriptions, and to explain these interwoven concepts
-keywords:
-- meteor publications
-- meteor publications and subscribers
-- meteor development
-- meteor developers
-- meteor developers for hire
-- meteor development company
-author: Tarun Batra
-link: /meteor-publications-and-subscriptions
-category:
-- Tutorial
-tags:
-- Meteor development
----
-
-[Meteor](https://www.meteor.com/) is a full-stack JavaScript platform, in fact the [11th most popular](http://stats.js.org/) JavaScript project on GitHub at the time of writing. What makes Meteor so disruptive is the mode of data communication between server and client. It's not [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) but instead, Meteor uses Publish Subscribe pattern to communicate data between server and client. The protocol used for this communication is Distributed Data Protocol (DDP), which is built in-house by The [Meteor Development Group (MDG)](https://www.meteor.com/company), the startup behind Meteor.
-
-In this chapter specifically, we're going to talk about meteor **publications** and **subscriptions**, and to explain these interwoven concepts, we're going to use them in various scenarios and analyze their results using 3rd party tools to achieve a better understanding of how Meteor publications and subscriptions work and the ways we can use them.
-
-Almost in every case, we'd need to publish a set of data from the server and subscribe to same in the client. Unlike conventional frameworks, Meteor server doesn't serve HTML content, but the data which is used by the client to render the HTML. This feature is called **data on the wire**. The server sends a set of data to the client initially and then keep pushing new data as it changes in the database.
-
-_Code to publish all documents from a collection of posts_
-
-
-```js
-if (Meteor.isServer) {
- var Posts = new Mongo.Collection('posts');
-
-Meteor.publish('listAllPosts', function () {
- return Posts.find();
- });
-}
-```
-
-
-
-_Code to subscribe for all documents from a collection of posts_
-
-```js
-if (Meteor.isClient) {
- var Posts = new Mongo.Collection('posts');
-
- Meteor.subscribe('listAllPosts', {
-
- onReady: function () {
- // called when data is ready to be fetched
- console.log(Posts.find().fetch());
- },
-
- onStop: function () {
- // called when data publication is stopped
- }
- });
-}
-```
-
-
-If you're new to Meteor, you'd already be sweating seeing that we just created a Mongo Collection on the client. You're right, it doesn't make sense.
-
-We actually created a **MiniMongo** Collection. MiniMongo is a client-side data store with a Mongo-like API. When we talk about server sending data to client, it's MiniMongo we're talking about.
-
-
-
-Subscribed data in MiniMongo visualized using [Meteor DevTools](https://github.com/thebakeryio/meteor-devtools) showing the 2 posts that were pushed to MiniMongo
-
-
-
-When a subscription becomes ready, the data is stored in MiniMongo and can be accessed by Mongo-like queries. The server keeps the MiniMongo in-sync with the data in back-end by sending additional data as the data changes in the back-end.
-
-
-
-Syncing of MiniMongo data through DDP showing 1 item being pushed to MiniMongo as it got added on the server
-
-
-
-
-
-Updated MiniMongo data showing total 3 posts
-
-
-
-## Readying a subscription
-
-As shown in the above code, when the subscription becomes ready, `onReady` callback is called. But when does the subscription become ready?
-
-1\. When a cursor is returned from the server in a Meteor publication, Meteor automatically makes the subscription ready after pushing the data from the cursor to the MiniMongo.
-
-```js
-Meteor.publish('listAllPosts', function () {
- return Posts.find();
- });
-```
-
-
-2\. To make the subscription ready manually, or without returning a cursor `this.ready()` is used as shown in the following code snippet.
-
-```js
-Meteor.publish('listAllPosts', function () {
- this.ready();
-});
-```
-
-
-This informs the client that whatever records which needed to be pushed initially are pushed, and subscription is deemed ready.
-
-##
-
-## Stopping a subscription
-
-There are use cases when you may want the data not to be pushed to the client and the client to know that the subscription was stopped for some reason. How can that be done?
-
-1\. You can manually stop a subscription by calling `this.stop()` from the publish function. This will stop the subscription and call the `onStop` callback.
-
-```js
-Meteor.publish('listAllPosts', function () {
- this.stop();
-});
-```
-
-
-2\. Another way to stop a subscription is to throw a Meteor Error from the publish function, which will result in the `onStop` callback being called with the error as the argument.
-
-```js
-//server
-
-Meteor.publish('listAllPosts', function () {
- throw new Meteor.Error('some reason');
-});
-
-//client
-
-Meteor.subscribe('listAllPosts', {
- onStop: function(err) {
- // handle the error
-});
-```
-
-##
-
-## Advanced concepts
-
-Meteor publications and subscriptions work like a charm if used properly. Syncing data in the background and updating the same in real-time looks pretty good. But it offers much more. You can take control of what gets pushed, when and how.
-
-To gain more control over the data you publish, you need to know what happens when Meteor publishes data. The following screenshot shows all the DDP messages which are exchanged between client and server of our sample Meteor app.
-
-
-
-DDP messages showing the publication of data using [Arunoda](https://github.com/arunoda)'s [DDP Analyzer](https://github.com/arunoda/meteor-ddp-analyzer) tool
-
-1. First, the client sends a DDP message to server subscribing to the `listAllPosts` publication.
-2. Then the server pushes the first set of data using `added` message.
-3. Next, the server readies the subscription using `ready` message.
-4. Upon addition of data in the database, server pushes the new document using the same `added` message.
-
-
-
-Now, if you're paying attention, you'd know that we used `this.ready()` earlier to ready a subscription. It's responsible for sending the `ready` message. Similarly, we have more methods which can be used to send the other kind of messages.
-
-### Adding a document
-
-You can use `this.added()` in a Meteor publish function to manually send an `added` message. It's signature is:
-
-
-```js
-this.added(collectionName, documentId, fields)
-```
-
-###
-
-### Changing a document
-
-Similarly, you can use `this.changed()` to change a document already pushed to the client. It's signature is:
-
-```js
-this.changed(collectionName, documentId, changedFields)
-```
-
-###
-
-### Removing a document
-
-To remove a document from client, Meteor provides `this.removed()` with the following signature:
-
-```js
-this.removed(collectionName, documentId)
-```
-
-
-_Code to publish a post and then change it's content_
-
-``` js
-Meteor.publish("sendCustomPost", function () {
- var doc = {"title": "Post 4", "content": "4th post" };
- // Pushing 4th document to client
- this.added("posts", "some-object-id", doc);
-
- // Changing the 4th document
- this.changed("posts", "some-object-id", { "content": "custom-content" });
-
- // Manually readying the subscription
- this.ready();
-});
-```
-
-
-
-
-DDP messages after executing the above code
-
-So, you can control the data you publish to the client. There are more interesting concepts, like intercepting a publication and changing the data but that's out of the scope of this article.
-
-Meteor publications and subscriptions make working with real time data easy and fun. To know more refer [Meteor Documentation](http://docs.meteor.com/) and after you're done with that, maybe [DDP specification](https://github.com/meteor/meteor/blob/devel/packages/ddp/DDP.md) too.
\ No newline at end of file
diff --git a/posts/meteor-publications-and-subscriptions/images/Screenshot-1-1.png b/posts/meteor-publications-and-subscriptions/images/Screenshot-1-1.png
deleted file mode 100644
index 646d8d6..0000000
Binary files a/posts/meteor-publications-and-subscriptions/images/Screenshot-1-1.png and /dev/null differ
diff --git a/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-20-44-19.png b/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-20-44-19.png
deleted file mode 100644
index ec337bf..0000000
Binary files a/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-20-44-19.png and /dev/null differ
diff --git a/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-20-45-28.png b/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-20-45-28.png
deleted file mode 100644
index 7119ebf..0000000
Binary files a/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-20-45-28.png and /dev/null differ
diff --git a/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-21-11-01.png b/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-21-11-01.png
deleted file mode 100644
index 3eefeb3..0000000
Binary files a/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-19-21-11-01.png and /dev/null differ
diff --git a/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-20-15-22-29.png b/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-20-15-22-29.png
deleted file mode 100644
index 3f20446..0000000
Binary files a/posts/meteor-publications-and-subscriptions/images/Screenshot-from-2016-07-20-15-22-29.png and /dev/null differ
diff --git a/posts/microservices-for-beginners/2017-07-18-Microservices-for-beginners-how-to-get-started-with-right.md b/posts/microservices-for-beginners/2017-07-18-Microservices-for-beginners-how-to-get-started-with-right.md
deleted file mode 100644
index 5dc9655..0000000
--- a/posts/microservices-for-beginners/2017-07-18-Microservices-for-beginners-how-to-get-started-with-right.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Microservices for beginners, how to get started with right tools'
-date: 2017-07-18
-featuredpost: false
-description: >-
- Microservices for beginners, how to get started with the right tools and when to choose the microservices. An introduction to advantages and disadvantages.
-author: Tarun Batra
-link: /microservices-for-beginners
-category:
-- Tutorial
-tags:
-- microservices
----
-
-__Microservices__ is a vague term which usually points to small independent services which together form up an application. [Microservices architecture](https://martinfowler.com/articles/microservices.html) stands in contrast to Monolithic architecture, where the application is one big system. We will discuss about how to get started as a beginner and choosing the right tools for setting up microservice architechture.
-
-## Rapid Rise in popularity of Microservices
-Microservices have recently risen into popularity, as suggested by this Google trends index:
-
-
-
-“microservices” in Google Trends
-
-Before getting into what they are, and how to use them, let’s find out why microservices are rising into popularity even though it’s not a new concept. This can be explained by Conway’s Law which states that:
-
-> Organisations which design systems … are constrained to produce designs which are copies of the communication structures of these organisations
-
-Until recently majority of companies were used to be giant enterprises, making equally giant enterprise software, or monoliths. Not anymore. Since last 5 years, companies are getting more distributed in nature. In fact, some of the new unicorns like [Automattic](https://automattic.com/) and [Gitlab](https://about.gitlab.com/) are entirely distributed. That explains why microservices are rising in popularity.
-
-## Why Microservices?
-
-### Fewer compromises in tech stack
-
-Choosing a tech stack is always a tough call. Skills of the team, scalability, maintenance are all important factors in this choice. But many times what’s good for one portion of the app, is not good for the other.
-
-For example, a trading platform needs PostgreSQL due to support for transactions, the user specific data has to be stored in DynamoDB. Generally, a trade off is made. But in Microservices Architecture, __each microservice owns a set of business logic and related data in the form it deem best__, and provide an interface to interact with it. So there can be microservices for trades and users each, with data hosted on PostgreSQL and DynamoDB, and access to external services is allowed only through the interface. So a computation intensive microservice can be written in Python while the API Server remains in NodeJS, and so on.
-
-A sample architecture would look like
-
-
-
-## Independent teams
-In a monolithic application, most of the people in a development team needs to know all the parts of the application even to develop a small feature. They have to collaborate with other teams on deployment schedules, versioning, data migrations, etc. On the other hand, in Microservices Architecture the teams just need to know the interface provided by other services and stick to the interface provided by theirs. Each microservice should be __independently deployable.__ CI/CD tools like [CirclCi](https://circleci.com/), [Travis](https://travis-ci.org/) and [Heroku](https://www.heroku.com/) are of great help while developing microservices. To develop/maintain a service, a small team with limited knowledge is enough.
-
-## Do one thing and do it well
-Microservices Architecture also resembles the Unix philosophy’s principle, Do one thing and do it well. It is a principle which has proved it’s worthiness and is one of the reasons Unix-like systems are not obsolete even after decades. Microservices should be designed to do one thing, tested to handle all the possible scenarios and then __“piped” together to form a robust and flexible application.__
-
-## Fault isolation
-Imagine error in a report generation module, takes the full trading application down. It’s terrible and unnecessary. If the application is based on microservices, the report generation module will fail, taking down only that specific feature. Users who are not generating reports won’t even notice, and __the critical parts of the application will still be working__. That’s a result of __Loose coupling__ between microservices, now achievable through this architecture.
-
-
-
-## How to develop Microservices?
-In Node.js, [Seneca](http://senecajs.org/) is a widely used framework to develop microservices. But if you want to get yours hands dirty, read on.
-
-## API Gateway
-Microservices can be deployed without a main central service, but sometimes a thin central layer is usually kept to have shared libraries. Sometimes it also works as an API Gateway.
-An API Gateway is used to provide a consistent API to the client side irrespective of the backend service, and vice versa. It is helpful when you have multiple microservices catering to clients like mobile, web, other servers, etc. Also it prevents client to make requests to multiple services by abstracting it into one request.
-
-## Inter-service communication
-How should these services communicate to each other?
-
-__HTTP:__ Well, there are plenty of options. Most straightforward is to use HTTP/HTTPS and the interface can be made as RESTful APIs. Though, HTTP makes service discovery difficult and less dynamic. That’s a reason I don’t prefer it.
-
-__Message Queues:__ Message Queuing protocols like AMQP, STOMP and MQTT allows the use of publish subscribe pattern for communication between microservices. Services like [RabbitMQ](https://www.rabbitmq.com/) and [Apache Kafka](https://kafka.apache.org/) are widely used for this purpose. I personally prefer using Message Queues as they are __fault tolerant__ and support __message persistence__.
-
-
-[microservice-template](https://github.com/Codebrahma/microservice-template) is a basic boilerplate which we use in our projects based on Microservices. It’s in Node and has MongoDB configured as a data store. It connects to RabbitMQ for inter-service communication via[ servicebus](https://www.npmjs.com/package/servicebus). Here’s how it looks in it’s bare minimum:
-
-
-Microservice booting up and communicating
-
-There are other concepts like [Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html) and [CQRS](https://martinfowler.com/bliki/CQRS.html) which complement the Microservices Architecture. Event Sourcing is basically storing the changes to the data, instead of the changed state of the data. in a highly concurrent environment, __event sourcing brings consistency of a higher order.__
-
-
-
-Productivity in Microservices vs Monolothic Architecture Source: [Martin Fowler](https://martinfowler.com/bliki/MicroservicePremium.html)
-
-But truth be told, Microservices Architecture is no silver bullet. Using microservices for fairly small apps can lead to loss in productivity, as evident in the above graph. To know if switching to microservices [custom app development](/custom-software-development-company) will help your product do get in touch with us.
\ No newline at end of file
diff --git a/posts/microservices-for-beginners/images/Screen-Shot-2017-07-13-at-19.21.56.png b/posts/microservices-for-beginners/images/Screen-Shot-2017-07-13-at-19.21.56.png
deleted file mode 100644
index c02ddb6..0000000
Binary files a/posts/microservices-for-beginners/images/Screen-Shot-2017-07-13-at-19.21.56.png and /dev/null differ
diff --git a/posts/microservices-for-beginners/images/Screen-Shot-2017-07-14-at-11.53.15-e1500013748185-1024x404.png b/posts/microservices-for-beginners/images/Screen-Shot-2017-07-14-at-11.53.15-e1500013748185-1024x404.png
deleted file mode 100644
index d1d52e4..0000000
Binary files a/posts/microservices-for-beginners/images/Screen-Shot-2017-07-14-at-11.53.15-e1500013748185-1024x404.png and /dev/null differ
diff --git a/posts/microservices-for-beginners/images/microservice-beginner-1.jpg b/posts/microservices-for-beginners/images/microservice-beginner-1.jpg
deleted file mode 100644
index 24ed898..0000000
Binary files a/posts/microservices-for-beginners/images/microservice-beginner-1.jpg and /dev/null differ
diff --git a/posts/microservices-for-beginners/images/microservices-beginner-2.jpg b/posts/microservices-for-beginners/images/microservices-beginner-2.jpg
deleted file mode 100644
index 0824ab5..0000000
Binary files a/posts/microservices-for-beginners/images/microservices-beginner-2.jpg and /dev/null differ
diff --git a/posts/microservices-for-beginners/images/productivity.png b/posts/microservices-for-beginners/images/productivity.png
deleted file mode 100644
index eff89e5..0000000
Binary files a/posts/microservices-for-beginners/images/productivity.png and /dev/null differ
diff --git a/posts/my-experience-at-the-bangalore-garden-city-ruby-conf-2014/my-experience-at-the-bangalore-garden-city-ruby-conf-2014.md b/posts/my-experience-at-the-bangalore-garden-city-ruby-conf-2014/my-experience-at-the-bangalore-garden-city-ruby-conf-2014.md
deleted file mode 100644
index 1b4fded..0000000
--- a/posts/my-experience-at-the-bangalore-garden-city-ruby-conf-2014/my-experience-at-the-bangalore-garden-city-ruby-conf-2014.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'My Experience at the Bangalore Garden City Ruby Conf 2014'
-date: 2014-01-05
-featuredpost: false
-description: >-
- Experiences of Bangalore Garden City Ruby Conf 2014 by Nitin Krishna, Developer at Ruby on rails consulting firm Codebrahma.
-author: Nithin Krishna
-link: /my-experience-at-the-bangalore-garden-city-ruby-conf-2014
-category:
-- General
-tags:
-- Ruby on rails
----
-
-Starting off in a predominantly [Ruby on Rails consulting firm][1] like Codebrahma, whilst still in college and with no prior ruby experience seemed daunting at first. I spent most of last month getting used to the 'Ruby Way' of doing things. I'm far form mastering ruby, but I'm able to enjoy and appriciate turse and elegant ruby code. "Coding in Ruby makes me happy because it's one of the shortest paths between my brain and a computer", Indeed it is.
-
-An absolute newbie to the ruby world, participating in an event like GCRC'14 filled with giants like [Chad Fowler][2] 'out of place' was the opposite of what I was feeling. The ruby world in warm and welcoming. 'The more The merrier' quoting one of the sepakers. The Bangalore garden City Ruby Conference was not aimed to be just a conference and It didn't turn out to be just that. There is nothing more exciting than a group of like minded people coming together and talking about their passion. In that sense, the last couple of days were immensely exciting. I most enjoyed bouncing product ideas off others, critiquing, being critiqued and understanding how different people approached similar problems. I ended up expanding my scope of thought and pushing myself to ponder about things which I wouldn't normally think about, be it because it was too trivial or too complex.
-
-### The Dark Side of Ruby
-
-As simple as ruby seems to be, there are times when it behaves in mysterious ways. [The dark side of ruby][3] by Gautam Rege did just that. Ruby differs form traditional object oriented languages in certain minute but distinct ways, and a lot of ruby's power is attributed to these subtleties. Gautham pointed out that there is nothing which is too trivial a concept, the more you question the more you can appreciate the beauty of how things work.
-
-### Architecting India's Largest Supply Chain System in Ruby
-
-I've always been amazed by how huge systems function. I keep guessing about the internals of such systems. They are black boxes and I could only imagine so much without actually knowing how they are architected. My long time curiosity was adiqutely satisfied by Mr.Yogi Kulkarni's talk on how he and his team architechted and built India's largest e-commerce supply chain in Ruby. Working in a micro-level ruby seems well and good but as the system gets larger, Ruby is left exposed. Nobody understands the [GIL][4] is a must read.
-
-### Need for polyglot programming
-
-One of the most interesting remarks was Chad Fowler stating that Ruby was the language that he most hated to use. This sentiment echoed through the entire conference as most speakers emphasized the need for polyglot programming. I guess this is true in a way. By being loyal to one language or a particular way of doing something might not always be the best way of doing it. The 'Right' way is often limited to the context of a language and not bound the wider aspects of computer science.
-
-All in all, It was an interesting couple of days. The best conferences are the ones which rekindle your curiosity and GCRC'14 was just that. It gave me some perspective.
-
-**Did you attend the bangalore garden city ruby conf? Please share your experiences as comments below**
-
-* * *
-
-If you are looking for any then do contact us for quality work.
-
-[1]: /
-[2]: http://twitter.com/chadfowler
-[3]: http://www.slideshare.net/gautamrege/gcrc-2014-the-dark-side-of-ruby-29681735
-[4]: http://www.jstorimer.com/blogs/workingwithcode/8085491-nobody-understands-the-gil
-
-
diff --git a/posts/observers-in-rails/observers-in-rails.md b/posts/observers-in-rails/observers-in-rails.md
deleted file mode 100644
index c3e7c42..0000000
--- a/posts/observers-in-rails/observers-in-rails.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Observers in Rails'
-date: 2014-07-30
-featuredpost: false
-description: >-
- Codebrahma explaining about the observers in rails. Observer classes respond to life cycle callbacks to implement trigger-like behavior outside the original class.
-keywords:
-- rails observers
-author: Nithin Krishna
-link: /observers-in-rails
-category:
-- Tutorial
-tags:
-- rails observers
-- Ruby on rails development
----
-
-## Life without Observers
-
-Let's say you need to listen to changes in a model's attributes and trigger some events based on those changes. If you look at the following example, I've done exaclty that. If the status of application is changed an email is sent.
-
-```ruby
-class Application < ActiveRecord::Base
-
- after_save :email_confirmation
-
- def open?
- status == 'Open'
- end
-
- def closed?
- status == 'Closed'
- end
-
- def pending?
- status == 'Pending'
- end
-
- def email_confirmation
- if status_changed?
- ApplicationMailer.closed_notification(self) if closed?
- ApplicationMailer.open_notification(self) if open?
- ApplicationMailer.pending_notification(self) if pending?
- end
- end
-
-end
-```
-
-The above piece of code _violates_ the **Single Responsibility Principle**, which states that each class should have "only one responsiblilty". The `Application` model should only deal with saving and manupluating the application object. Sending emails is not part of it's responsiblity.
-
-* * *
-
-## ActiveRecord::Observers
-
-We can delegate the responsiblity of observing changes in model attibutes and responding to those changes, to a seperate Observer class. Model specific event handling is much cleaner this way. This way, we can refrain from polluting the model by adding not un-necessary methods.
-
-```ruby
-class ApplicationObserver < ActiveRecord::Observer
-
- def after_save(appl)
- if status_changed?
- ApplicationMailer.closed_notification(appl) if appl.closed?
- ApplicationMailer.open_notification(appl) if appl.open?
- ApplicationMailer.pending_notification(appl) if appl.pending?
- end
- end
-
-end
-```
-You can read more about the observer design pattern [here][1].
-
-* * *
-
-_ _
-
-## Note
-
-1. Observer names are infered form the model names. So if you name your observer as `ApplicationObserver`, rails knows that it's observing the `Application`model.
-2. Your observers need not be model specific. SRP states that "Responsibility should be entirely encapsulated by the context". So by this definition you can have a single observer which listens to changes in multiple models and perfom a single function say, sending an email or publishing a notification. To acomplish this you can use the`ActiveRecord::Observer.observe` method.
-3. Place your observers in `app/models` or `app/models/observers`.
-4. Finally, Observers have been **removed** form the rails core after `Rails 3.2`. You need to include the `rails-observers` gem to use observers in later rails versions.
-* * *
-
-Refrences:
-[http://api.rubyonrails.org/v3.2.13/classes/ActiveRecord/Observer.html][4],
-[nithinkrishna.github.io][3]
-
-[1]: http://sourcemaking.com/design_patterns/observer
-[3]: http://nithinkrishna.github.io/blog/Active-record-observers/
-[4]: http://api.rubyonrails.org/v3.2.13/classes/ActiveRecord/Observer.html
-
-
\ No newline at end of file
diff --git a/posts/open-github-network-graph-from-command-line/images/network-1024x398.png b/posts/open-github-network-graph-from-command-line/images/network-1024x398.png
deleted file mode 100644
index a3576c2..0000000
Binary files a/posts/open-github-network-graph-from-command-line/images/network-1024x398.png and /dev/null differ
diff --git a/posts/open-github-network-graph-from-command-line/open-github-network-graph-from-command-line.md b/posts/open-github-network-graph-from-command-line/open-github-network-graph-from-command-line.md
deleted file mode 100644
index 46bcce1..0000000
--- a/posts/open-github-network-graph-from-command-line/open-github-network-graph-from-command-line.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Open github network graph from command line'
-date: 2014-12-11
-featuredpost: false
-description: >-
- Github's network graph is one most elegant tools to track your project's progress. Here is a brief tutorial on how to open github network graph from command line
-author: Nithin Krishna
-link: /open-github-network-graph-from-command-line
-category:
-- Tutorial
-tags:
-- github
----
-
-Github's [network graph][1] is one most elegant tools to track your project's progress. Open the network graph of you current project with this shell script.
-
-Just type _network_.
-
-```js
-function network(){
- url=$(git remote -v | grep origin | awk 'FNR == 2{print $2}')
- sub_path=$(echo ${url##*github.com})
- project_name=$(echo ${sub_path:1} | rev | cut -c 5- | rev)
- project_url=$(echo "https://github.com/${project_name}/network")
- cowsay "I'm taking you to $(echo ${project_url})"
- python -mwebbrowser $(echo ${project_url})
-}
-```
-![network][2]
-
-With a little more customization.
-
-```js
-function open_url(){
- cowsay "I'm taking you to ${1}"
- python -mwebbrowser $1
-}
-
-function gh(){
- url=$(git remote -v | grep origin | awk 'FNR == 2{print $2}')
- sub_path=$(echo ${url##*github.com})
- project_name=$(echo ${sub_path:1} | rev | cut -c 5- | rev)
- open_url "https://github.com/${project_name}/${1}"
-}
-```
-
-```
-gh # Open repo
-gh network # Open network graph
-gh pulse # Open repo pulse
-gh pulls # Open pull requests
-gh branches # Open branch list
-gh wiki # Open wiki
-```
-
-[1]: https://github.com/blog/39-say-hello-to-the-network-graph-visualizer
-[2]: ./images/network-1024x398.png
-
-
\ No newline at end of file
diff --git a/posts/optimizing-your-workflow-git-bash-101/optimizing-your-workflow-git-bash-101.md b/posts/optimizing-your-workflow-git-bash-101/optimizing-your-workflow-git-bash-101.md
deleted file mode 100644
index 4316dba..0000000
--- a/posts/optimizing-your-workflow-git-bash-101/optimizing-your-workflow-git-bash-101.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Optimizing your workflow Git-Bash-101'
-date: 2014-06-11
-featuredpost: false
-description: >-
- Codebrahma sharing cool bash scripts to optimize your git workflow. Git workflow for web development
-author: Nithin Krishna
-link: /optimizing-your-workflow-git-bash-101
-category:
-- Tutorial
----
-
-Git is a developer’s best friend. When ever you screw up, git is always there to save the day. Here are some cool bash scripts to optimize your git workflow. Add the following snippets to your `.bash_profile` and voila.
-
-## 1.Know where you are.
-Often you forget which branch you are working on. It will be great if you always knew which branch you are on currently.
-```js
-function current_branch() {
- git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \1/'
-}
-
-export PS1="\u@\h \W\[\033[32m\] |\$(current_branch)\[\033[00m\] > "
-```
-
-## 2.Push this!
-Especially when working with colleagues who use weird and complicated branch names, typing the name every time you push code is a pain in the ‘wrong’ place.
-
-```bash
-function gpthis(){
- remote=${1-origin}
- cowsay "pushing $(current_branch) to $remote"
- git push $remote $(current_branch)
-}
-```
-
-
-## 3.First to push.
-When multiple people are working in the same branch, there is always a race for who pushes first. The guy who pushed second, has to pull rebase and then push, too much work right?
-
-```bash
-function gpsafe(){
- git stash
- remote=${1-origin}
- conflict=$(git pull -r $remote $(current_branch) | grep -i "CONFLICT")
-
- if [[ -n $conflict ]]
- then
- cowsay "Please resolve the above CONFLICTS"
- git status
- else
- gpthis $remote
- fi
- git stash pop
-}
-```
-
-
-Refrences: [nithinkrishna.github.io](http://nithinkrishna.github.io/blog/Optimising-your-workflow-Git-Bash-101/)
\ No newline at end of file
diff --git a/posts/parallel-processing-in-ruby/parallel-processing-in-ruby.md b/posts/parallel-processing-in-ruby/parallel-processing-in-ruby.md
deleted file mode 100644
index d6ea18d..0000000
--- a/posts/parallel-processing-in-ruby/parallel-processing-in-ruby.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Parallel processing in ruby'
-date: 2014-08-15
-featuredpost: false
-description: >-
- Ruby on rails developers explaining how parallel processing works in ruby with code snippets.
-author: Nithin Krishna
-link: /parallel-processing-in-ruby
-category:
-- Development
-tags:
-- Parallel processing in ruby
-- Ruby on rails development
----
-
-**[Parallelization](http://en.wikipedia.org/wiki/Parallel_computing)** is a powerful concept. It can speedup execution n-fold. A lot of processes are inherently concurrent. Such processes have to be identified and exploited.
-
-These days most computers run on multi-core processors. If we run existing applications on multi-core systems, there might be no visible performance difference. We need to optimize our code to enjoy the performance benefits of multi-core systems.
-
-This [gem](https://github.com/grosser/parallel)(Parallel) helps us achieve this in ruby.
-
-```ruby
-#with and without 'Parallel'
-Benchmark.bm do |x|
- x.report("with") { Parallel.map(1..50, :in_threads => 10) { sleep 1 } }
- x.report("without") { (1..50).to_a.map { sleep 1 } }
-end
-case | user | system | total | real
--------------------------------------------------------------------
-with | 0.000000 | 0.010000 | 0.100000 | (05.006012)
-without | 0.010000 | 0.000000 | 0.010000 | (50.055157)
-```
-
-Results are instantly visible. A 10-fold increase in performance!
-
-## What can be parallelized?
-Let’s look at some examples.
-
-1.MapReduce Operations
-```ruby
-#Without parallel
-orders
- .map(&:amount)
- .inject(:+)
-
-#With parallel
-Parallel.map(orders)(&:amount).inject(:+)
-```
-2.Multiple Uploads / API Calls
-
-```ruby
-s3 = AWS::S3.new
-files = [..] #Array of files
-
-#Without parallel
-files.each{ |file| s3.buckets[bucket_name].objects[key].write(:file => file) }
-
-#With parallel
-write_file = -> (file){ s3.buckets[bucket_name].objects[key].write(:file => file) }
-Parallel.each(files)(&write_file)
-```
-
-3.Sequential database queries
-
-```ruby
-#Without parallel
-User.all.each_with_index do |user, index|
- user.update(:attribute => "#{index}")
-end
-
-#With parallel
-update_user = -> (u,i){ u.update(:attribute => "#{i}") }
-Parallel.each_with_index(User.all)(&update_user)
-```
-Whilst we aim at building rails-applications that scale and perform better, limited by the performance constraints that are inherent to ruby such intelligent code optimizations are key.
-
-Refrences: [nithinkrishna.github.io](http://nithinkrishna.github.io/2014-08-15-parallel-processing-in-ruby/)
-
diff --git a/posts/pr-101-setting-up-your-startup-for-success/2016-10-13-PR-101-Setting-Up-Your-Startup-For-Success.md b/posts/pr-101-setting-up-your-startup-for-success/2016-10-13-PR-101-Setting-Up-Your-Startup-For-Success.md
deleted file mode 100644
index 8ab050c..0000000
--- a/posts/pr-101-setting-up-your-startup-for-success/2016-10-13-PR-101-Setting-Up-Your-Startup-For-Success.md
+++ /dev/null
@@ -1,134 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'PR 101: Setting Up Your Startup For Success'
-date: 2016-10-13
-featuredpost: false
-description: >-
- Public relations, traditionally about managing favorable relations with your audience, can be a solid growth hack for your new startup. Read on to learn how
-keywords:
-- pr for startups
-- startup pr
-- growth hack
-author: Anand Narayan
-link: /pr-101-setting-up-your-startup-for-success
-category:
-- Business
-tags:
-- growth hack
-- PR
-- startups
----
-
-__Public Relations__ is all about creating and managing a favorable relation with your audience. Almost every successful application includes effective PR strategies in their list of growth hacks. One good mention from a reputed journal or blog could give your user acquisition rate, the jump it requires to achieve escape velocity! But traditionally, companies have been relying on PR agencies to help them navigate this jungle – and these agencies are not pocket friendly, especially for cash-strapped startups. There is a growing consensus in the startup community that founders should take PR matters into their own hand, instead of outsourcing. But where do you begin?
-
-
-
-> Successful PR campaign begins with successful research.
-
-
-
-Goal of this exercise? Successfully reaching out to and connecting with journalists and bloggers, and getting your content published. Breaking it down further, we could broadly classify this activity into two parts: (i) Identifying whom to pitch (ii) Writing out that email.
-
-
-
-## Whom Should You Pitch To
-
-
-Before you start creating a list of publications you want to target, you need to figure which kind of publication you should target. An easy way to figure this out is to know which publication is your users are most likely to read. If your application is geographically constrained, targeting the local newspapers and journals in that area makes most sense. Hyperlocal delivery startups usually fall into this category. On the other hand, a SAAS company might benefit from press which has a larger and more global reader base, taking into account the language factor.
-
-Once you have a idea of which kind of publications you want to get featured in, the next step would be to find contacts of journos and bloggers.
-
-
-
-> Sending cold emails to contact@kickassnewssite.com is not going to be of much help.
-
-
-
-News publications get tons of emails asking for coverage, every single day. Sending a cold email to their generic contact email id will not be of much help. Chances are, it is going to go unread. Unless the publication is in dire need of content to feature, in which case you might need to rethink your choice. 🙂
-
-A more sensible approach is to reach out to individual journalists. This in itself is not an easy task – nobody likes making their email ids public. This is where social media comes to rescue.
-
-
-
-> Twitter conversations are a great place to start
-
-
-
-Most of the journalists are active on twitter, it is a good platform to try and reach out. Compiling a list of reporters and sending them all a standard tweet is a strict no. They will go through your profile before responding, and if you have 30 carbon copy tweets – they might pass. A better approach would be to start a friendly conversation about the topics they’re interested in, eventually leading up to the pitch. A bit sly, but what the hell!
-
-
-
-> Emails work more often than not
-
-
-
-While sending emails to a publications generic contact id might not get you in, sending a well thought out email to an individual’s id is quite likely to work. You need to find journalists and bloggers who cover your startups area of opportunity and send them a nice email.
-
-Romain Dillet of TechCrunch has some good advice here, “… find out who tends to cover your startup’s area of opportunity, and reach out with something short and sweet. Don’t pitch too early, tell a story, and build relationships. Finally, don’t take it personally if we don’t cover your startup — there are so many good things out there that it’s hard to keep up with everything.”
-
-
-
-[Pressfarm](https://press.farm/) is a service where you could find email ids of over 250 journalists from various categories by shelling out a small monthly fee of $9. When they launched in 2014, TechCrunch posted a snappy response by offering all of their email ids for free! You can get that list [here](https://techcrunch.com/2014/07/14/please-dont-spam-us/).
-
-[HARO](https://www.helpareporter.com/) – help a reporter out is another great service wherein you get periodic notifications from reporters looking to cover certain topics. If the topics they’re looking to cover fall within your domain, you reply with your thoughts and ideas, and chances are the reporter will use your help to structure their article.
-
-
-## Construct the perfect email
-
-
-Let’s face it, people are busy. And having been using email since forever, people have developed a strong radar against anything that remotely resembles spam. Keeping this in mind, you need to design your email in a way that it gets opened and read.
-
-
-
-## The ideal email structure:
-
-
-__Short, to the point subject:__ Internet marketers have fretted over the perfect subject line for years. A good subject line can be the decider between your startup being featured in TechCrunch or not. A good strategy here is to keep the subject line short, highlighting the value prop for the user. Tip: Never, NEVER use uppercase for your subject.
-‘Order pizza from within your favourite messaging app?’
-
-Vs
-
-‘We’ve made a chat bot that will revolutionize the way you chat with your friends’
-
-
-
-__Addressing:__ Starting an email with ‘Hey there’ or ‘Hello’ could possibly give out the idea of a mass email. Personalization is what you need.
-‘Hello Katy, loved your recent article [insert link] on chat bots! We’re launching a bot very soon that’ll let you order your favourite pizza from within your favourite chat app, would you be interested in checking out our beta version?’
-
-
-
-__How does your product help the user:__ Give out your USP quickly, put in some metrics and data showing your product’s superiority. Instead to talking in general – tell the reader how your product makes her life easier. Pro tip: keep away from industry jargon, unless you’re sure that your target reader is adept at it.
-
-Bad: ‘We are a unique startup that have built a messaging bot on advanced AI and machine learning algorithms that’ll revolutionize that way you do everything chores’
-
-Good: __‘We’ve built a bot that let’s you order a your favourite meal without leaving your favourite messaging app. Order for your whole group – we’re making food social again’’__
-
-
-
-__End on a pleasant note:__ After giving out on all the necessary data, thank and mention that you are looking forward for response and drop your contact info. Plain and simple.
-
-
-Not all emails will be responded although some might take a bit of time. It pays to be patient! The thumb rule of following up is that you wait for about a week, and don’t follow up more than once. You don’t want to come across as someone who’s desperate for media.
-
-
-
-## Common pitfalls:
-Starting too late. You should ideally start with your PR efforts about a month before your launch.
-
-Wrong audience. Make sure your efforts are targeted towards the right audience.
-
-Mass emailing. It’s borderline spam. Try and keep your emails as personalized as possible.
-
-Not following up or following up too often.
-
-
-## Offline PR practices
-
-
-Cold emails are the bedrock of your PR campaign, however there are some offline practices that will augment your efforts and help you get featured. Participating in tech events could be a very useful strategy. A bit expensive, but if your company can afford it, you should definitely consider setting up a stall in one of the popular tech events. TechCrunch Disrupt, SXSW and the Startup Grind are some of the more popular conferences that enjoy a lot of media attention.
-
-PR is about developing relationships and building your brand. Effective PR strategies can help you get to influential bloggers and journalists who will help get the word out faster than any marketing campaign.
-
-
-
-I’d love to hear your take on PR strategies and how you execute them for your startup. If you think someone you know will benefit from this article, [won’t you share it with them?](?subject=I%20wanted%20you%20to%20see%20this&body=Check%20out%20this%20article:%20http://bit.ly/pr101mail.%20It%20talks%20about%20using%20PR%20to%20grow%20your%20startup.)
diff --git a/posts/quick-start-to-service-oriented-architecture/quick-start-to-service-oriented-architecture.md b/posts/quick-start-to-service-oriented-architecture/quick-start-to-service-oriented-architecture.md
deleted file mode 100644
index de09f53..0000000
--- a/posts/quick-start-to-service-oriented-architecture/quick-start-to-service-oriented-architecture.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Quick start to Service Oriented Architecture'
-date: 2013-06-18
-featuredpost: false
-description: >-
- Codebrahma demystifies Service Oriented Architecture for dummies.
-author: Anand Narayan
-link: /quick-start-to-service-oriented-architecture
-category:
-- Research and Articles
-tags:
-- web application development
----
-
-SOA, an abbreviation that is frequent in text-books, but not so much in codebases.
-
-Lets demystify SOA.
-
-Lets say you want to build a Flight Ticket Booking website. Basically you get the users requirements and search from expedia and other service providers.
-
-### The monolithic way of doing this is
-
-1. You make an AJAX call to your HTTP server,
-2. HTTP server queries the API of expedia and other service providers
-3. Once the API responds, your HTTP servers sends the result back to the browers (via the AJAX call)
-
-Cons:
-
-1. Your HTTP server is highly coupled with the way your service provides.
-2. Response Time is high. The user is kept waiting throughout this process.
-3. Testing and maintenace becomes very difficult with such high coupling.
-4. Takes up a lot of server resources and scaling becomes a pain
-
-### The Services Way
-
-1. You make an AJAX call to your HTTP server, it take the request and passes it onto a Messaging Queue.
-2. Your HTTP server immediately responds to the user, asking him to wait. Your HTTP server is now free of that request.
-3. You implementing a Booking Service, which takes the request from the messaging queue and carry's out its responsibilty and puts its reponse back
-4. We listen for this response and pass the information to the browser via a socket connection or a comet server.
-
-Pros:
-
-1. Responsibilities are well seperated. Your HTTP service and Booking service are no more coupled. They talk via the messaging queue
-2. Testing and maintenance becomes a lot easier.
-3. Very Responsive.
-4. Server Resources are freed and its easier to scale.
-
-
-Have you used SOA in your architecture. What Messaging Queue did you use?
diff --git a/posts/rails-i18n-and-elegant-message-passing-to-javascript/rails-i18n-and-elegant-message-passing-to-javascript.md b/posts/rails-i18n-and-elegant-message-passing-to-javascript/rails-i18n-and-elegant-message-passing-to-javascript.md
deleted file mode 100644
index 6e97ec3..0000000
--- a/posts/rails-i18n-and-elegant-message-passing-to-javascript/rails-i18n-and-elegant-message-passing-to-javascript.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Rails I18n and elegant message passing to Javascript'
-date: 2014-09-07
-featuredpost: false
-description: >-
- Internationalization is the process of abstracting all strings out of your application. Rails provides excellent support for Internationalization.
-author: Nithin Krishna
-link: /rails-i18n-and-elegant-message-passing-to-javascript
-category:
-- Research and Articles
-tags:
-- Ruby on rails development
----
-
-Internationalization is the process of abstracting all strings out of your application. Rails provides excellent support for [Internationalization][1].
-
-Rails' internationalization works well when views are built the Rails way. But when we are looking to build SPAs and front-end heavy applications, we often end up hard-coding error messages, response status messages (etc) in our javascript fies. Or worse, polluting javascript with Rails helpers!
-
-```js
-$(document).ready(function(){
- alert("Welcome!");
- alert("<%= t('welcome_message') %>");
-})
-```
-As our projects grow, such practices contribute to greater software entropy and it becomes nearly impossible to maintain code.
-
-##
-
-## Keeping it neat and clean
-
-* * *
-
-### 1.The MessageHandler service.
-
-Write a simple message handler service which takes in a language, parses the corresponding `language.yml` file _(from config/locales/*.yml)_ and returns it's contents as a hash.
-
-```ruby
-class MessageHandler
- class << self
-
- @@data = {}
-
- def data_in(language)
- load! if !@@data[language]
- @@data[language][language.to_s]
- end
-
- def load!
- possible_languages.each do |language|
- file_path = locale_file_path(language)
- @@data[language] ||= YAML.load(File.read(file_path)
- end
- end
-
- def possible_languages
- [ :en, :es, :pt]
- end
-
- def locale_file_path(language)
- File.join(Rails.root, 'config', 'locales', "#{language.to_s}.yml")
- end
-
- end
-end
-```
-
-### 2.Using gon.
-
-[Gon][2] helps you streamline data transfer to javascript. You can set data in your controller, gon will make it available in your javascript.
-
-Use gon to set the contents of your language files to a javascript variable, in the application conroller.
-
- ```ruby
-#EN.YML
-welcome_message: 'Welcome!'
-```
-```ruby
-class ApplicationController < ActionController::Base
- before_filter :set_messages
-```
-```ruby
-private
- def set_messages
- I18n.locale = params[:locale] || I18n.default_locale
- gon.messages = MessageHandler.data_in(I18n.locale)
- end
-end
-<%= include_gon(:camel_case => true, :namespace => 'app', :init => true) %>
-```
-```js
-
-```
-
-###
-
-###
-
-### 3.Some Optimization
-
-While this approach works great, when ever we add/modify our YAML files we need to restart our Rails sever for it reflect in our javascript.
-
-Everytime our Language-YAML files are changed, `load!` has to be invoked. This can be done by using Rails' `ActiveSupport::FileUpdateChecker` service which Rails uses to reload code dynamically during runtime.
-
-```ruby
-def data_in(language)
- load! if !@@data[language] or files_changed?
- @@data[language][language.to_s]
-end
-
-def files_changed?
- @@file_update_checker ||= ActiveSupport::FileUpdateChecker.new(language_file_paths)
- @@file_update_checker.updated?
-end
-```
-
-### 4.Voilà
-
-Everything just works!
-
-
-``` js
-// /?locale=en
-alert(app.messages.welcome_message); // 'Welcome!'
-
-// /?locale=fr
-alert(app.messages.welcome_message); // 'Accueil!'
-
-// /?locale=tm
-alert(app.messages.welcome_message); // 'வரவேற்பு!'
-```
-
-### References
-
-[1]: http://guides.rubyonrails.org/i18n.html
-[2]: https://github.com/gazay/gon
diff --git a/posts/react-js-best-practices-2016/react-js-best-practices-2016.md b/posts/react-js-best-practices-2016/react-js-best-practices-2016.md
deleted file mode 100644
index c0bbbf7..0000000
--- a/posts/react-js-best-practices-2016/react-js-best-practices-2016.md
+++ /dev/null
@@ -1,200 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'React.js Best Practices for 2016'
-date: 2016-05-19
-featuredpost: false
-description: >-
- Comprehensive list of informal rules to be followed to make your React code optimized. Hire us if you are looking for React.js Programmers.
-keywords:
-- React.js programmers
-- hire react js developers
-- react js development company
-- react development company
-- react js experts
-author: ARAVINDAN
-link: /react-js-best-practices-2016
-category:
-- Research and Articles
-tags:
-- React
-- react js
-- reactjs
-- React js development company
-- Reactjs Developers
----
-
-[React][1]– The open-source JavaScript library developed by Facebook has been in the spotlight in 2015. The web development fraternity is slowly adopting this relatively new library to develop many applications. A number of major brands such as Airbnb, free code camp, Instagram, NewYork times have chosen React to develop their websites. 2016 is a year of great potential as well as great challenges for react.js programmers choosing React. React.js Best Practices 2016 are a set of informal rules to help developers overcome the challenges in developing quality code.
-
-## Flip side of Flux:
-
-Flux is a language agnostic micro-architecture developed by Facebook. It does not qualify as a full-fledged framework or a library but it is an architecture that works hand in hand with flux in implementing the concept of Uni-directional Data Flow. It helps in solving some of the most common challenges in the MVC architecture. Flux is a boon to the developers which helps to manage an application state The primary components of flux are:
-
-* Dispatcher- used to automate the event callbacks
-* Actions- methods that facilitate the process of passing data to the dispatcher
-* Store- Containers that contain the state of the UI
-
-The common problem that is faced by react.js programmers is the over-use of flux. Flux provides a clean way to store your application's state but using it for managing route related states would unnecessarily create complications in your code.
-
-Suggestion:
-
-The use of flux managing apps global state instead of using it for local and temporary data would help avoid creating unnecessary complications in your code.
-
-## REDUX:
-
-The official site of [Redux][2] describes it to be a predictable state container for JavaScript apps. Redux attempts to make state mutations predictable by imposing certain restrictions on how and when updates can happen. Redux is an evolution of ideas found in Facebook's Flux but it avoids the complexities found in flux by observing how applications are built in Em language.
-
-### Normalizr:
-
-Normalizer is a library used to keep the state flat. The frequent nested response that we obtain from API can be difficult to manage in redux architecture. Keeping your state as flat as possible helps in querying and manipulating the data for your components.
-
-As the complexity of the application increases,so will the complexity of the response that you obtain from APIs. In this case, Normalizr helps in handling the data by providing a simple way to extract data from the nested responses.
-
-
-
-## The Immutable object:
-
-Immutable objects are those,whose state cannot be modified once it is created. Objects of this kind have always been used in programming
-
-For example
-
-``` js
-var string1= "Code Brahma-";
-var string2= "The expert web developers";
-var string3= string1.concat(string2);
-```
-
-
-
-It is obvious from the above code snippet that the value of string3 is now " Code Brahma-The expert web developers". The newly formed concatenated string is stored string3 and the string method does not affect the original string in any way. In java script,strings and numbers are immutable by design.
-
-The use of immutable objects reduces the complexity of the code that we develop with the help of their reference level equality checks. One of the commonly used methods for implementing immutability in your code is the [Immutable.js][3]. Immuntable.js can be used by installing it as an npm module.
-
-A simple example for Immutable.js is as follows
-
-```jsx
-var book = Immutable.Map({
-author: 'John',
-genre: 'romance'
-price: '123'
-});
-
-var changePrice = function( book, newPrice ) {
-return person.set( 'price' , newPrice );
-};
-
-var book2 = changePrice( book, '200' );
-
-console.log( book.get('price'), book.get( 'price' ) );
-//123 200
-```
-
-First, a book is created with the author, genre and price attributes. The `changePrice` function returns a new immutable map. When the `changePrice `function is executed, book`2` is created as a return value, and book`2` is strictly different than book. The price of each book map can be accessed via the `get` method. The properties of the maps are hidden behind the `get`/`set `interface, therefore they cannot be directly accessed or modified.
-
-The immutable.js is a fast and intelligent way of developing immutability in your code.
-
-## Routing
-
-Routing is quite common in all client side applications. One of the most popular and recommended library for routing in React is the [react-router][4]. A simple tip to make your routing more effective is to maintain your router's state in sync with the global state. This allows you to keep a track of the router behavior.
-
-## Use Lazy Loading
-
-This is one of the most important features of web development today, as controlling attrition rate is one of the major challenges faced by all developers. This feature is extremely useful in large applications where you do not have to load the complete application before rendering.
-
-## Classes
-
-React is quite compatible with ES2015 classes. Thus defining your react classes as a plain java script class is also recommended in React.js Best Practices 2016.
-
-```jsx
-class HelloMessage extends React.Component
- render()
- {
- return
- Hello {this.props.name};
- }
-}
-```
-
-Mixins are not supported by ES6. Therefore it is not possible to use React mixin mechanism in ES6.
-
-We definitely recommend the use of higher order components over mixins.
-
-## PropType
-
-_Props_ are the mechanism _React_ uses to let components communicate with each other. A parent component can pass it's child(ren) named prop values, which the child can then use in its internal logic.
-
-For example:
-
-```jsx
-const personDetails = React.createClass({
-
- propTypes:{
-
- personName : React.Proptype.string.isRequired
-
- phoneNumber : React.proptype.number.isRequired
-
- birthDate: React.proptype.instanceof(date).isRequired
-
- }
-
- render()
- {
-
-
-
Name
Number
DOB
-
-
-
-
{ this.props.PersonName}
-
-
{this.props.PhoneNumber}
-
-
{this.props.BirthDate}
-
-
- };
- }
-
-});
-```
-
-using proptype can actually save hours of coding time which makes a huge impact while developing large applications.
-
-## Higher-Order Components:
-
-When an existing component is required to perform some additional functionalities apart from the ones they were designed for, Higher-Order Components are used. Since mixins are not supported by ES6, it is necessary to adopt a different approach.
-
-The new approach encourages developers to compose a new component from the existing one in order to extend the functionalities of the original component. Implementing Higher order components help to keep the view as simple as possible.
-
-## Testing
-
-Testing the code is a very important part of the development cycle that ensures the proper quality of the developed application. There are a number of libraries in React that allows the testing of the developed component.
-
-### Component Testing
-
-One of the most popular testing libraries of the recent times is [Enzyme][5] by Airbnb. The shallow rendering feature of Enzyme allows the testing of both logic and rendering the output of the program. OOf course, the professional testing by selenium cannot be replaced.
-
-### Npm
-
-"Knowledge is the only wealth that grows when shared"
-
-npm helps Javascript developers share their code. This allows you to take the code of other developers as well as share re-usable bits of your code. Npm has a lot of quality re-usable content that can help you save a lot of coding time.
-
-## ES2015
-
-BabelJs is a configurable transpiler, a compiler which translates from Javascript to Javascript unlike a compiler which translates high-level application code into lower level code or binaries. Babel started out as `6to5` and has established itself as the defacto tool for Javascript transpilation beating out tools like Traceur. Babel allows you to create code in ES6/ES2015 and still compile it in present day browsers that are not compliant with ES6. Thus, this compiler allows the use of next generation java script today.
-
-## Conclusion
-
-The number of programmers who have started adopting React for developing web applications is rapidly increasing. The knowledge about the various React.js Best Practices 2016 is essential for all react developers to produce updated quality code. If you have other React tools that can be added to the list, add them in the comments below.
-
-If you're looking to [hire ReactJS developers][6] drop us a line!
-
-**Looking for [React JS development company ?][6]**
-
-[1]: https://facebook.github.io/react/
-[2]: http://redux.js.org/index.html
-[3]: https://github.com/facebook/immutable-js
-[4]: https://github.com/reactjs/react-router
-[5]: https://github.com/airbnb/enzyme
-[6]: /react-js-development/
\ No newline at end of file
diff --git a/posts/react-native-android-app/2016-06-27-Awesome-React-Native-Android-App-with-JavaScript.md b/posts/react-native-android-app/2016-06-27-Awesome-React-Native-Android-App-with-JavaScript.md
deleted file mode 100644
index 52e39b6..0000000
--- a/posts/react-native-android-app/2016-06-27-Awesome-React-Native-Android-App-with-JavaScript.md
+++ /dev/null
@@ -1,215 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Awesome React Native: Building Android App with JavaScript'
-date: 2016-06-27
-featuredpost: false
-description: >-
- Learn how to build an android app with React Native. Build an android movie app Motion using public API provided by themoviedb with React Native.
-keywords:
-- React Native
-- React Native Developers
-- React Native Development
-- React Native Development Company
-- ReactJS Development Company
-author: Balram Khichar
-link: /awesome-react-native-building-android-app-javascript
-category:
-- Tutorial
-tags:
-- React Native
-- React Native Tutorial
-- ReactJS
-- Reactjs Developers
----
-
-
-Building mobile applications using JavaScript is in trend these days. Frameworks like [Ionic](http://ionicframework.com/), [PhoneGap](http://phonegap.com/) and [Sencha Touch](http://www.sencha.com/products/touch/) provide the ability to develop apps using basic knowledge of HTML, CSS and JavaScript. With these frameworks, you have the ability to make calls to native APIs, but the bulk of your app will be HTML and JavaScript inside a WebView. [React](https://facebook.github.io/react/), Facebook's JavaScript library has proved tremendously successful around the web, including large companies like [Netflix](http://techblog.netflix.com/2015/01/netflix-likes-react.html) and [Airbnb](https://www.airbnb.com/meetups/x4ede5jr2-css-frameworks-and-the-evolution-of-airbnb-s-frontend).
-
-[React Native](https://codebrahma.com/react-native-development-company/) is a JavaScript framework for writing real, natively rendering iOS and Android applications. Instead of running React in the browser and rendering to divs and spans, React Native run it in an embedded instance of JavaScriptCore inside app and render to higher-level platform-specific components.
-
-
-
-
-
-
-
-In this tutorial, we'll build an android movie app **Motion** using public api provided by [themoviedb](https://www.themoviedb.org) with React Native. You can find list of movies currently playing in theaters.
-
-
-
-### 1. Creating A Blank React Native Project
-
-Make sure you have [Node](https://nodejs.org/en/) installed in your system. You can follow [this](https://docs.npmjs.com/getting-started/installing-node) guide to install Node. Now, from the terminal run `npm install -g react-native-cli`. This will install React Native globally on your system. You can also follow the [official guide](https://facebook.github.io/react-native/docs/getting-started.html#content) to get started.
-
-Navigate to the folder in your system where you would like to set up the project. Once there, from the terminal run `react-native init Motion`. This should fetch and install the required modules and create a new folder called **Motion**.
-
-
-
-
-
-
-React Native provides ability to write both Android and iOS applications together with a majority of JavaScript code shared between them. Inside the newly created folder **Motion** you will find two .js files: index.android.js and index.ios.js. If you're building an iOS app you'll work with index.ios.js; with index.android.js for an Android app; and both for, you know, both platforms.
-
-We're building an android app so we can remove the index.ios.js and ios folder. We'll be working with **index.android.js** file. This is the file that is first executed when the app launches.
-
-Connect your usb-debugging enabled android device to your system and from the terminal run `react-native run-android`. It will start the blank app in your device.
-
-
-
-
-### 2. Getting the data from themoviedb API
-
-You need to get an api key from [themoviedb](https://www.themoviedb.org/documentation/api) first to access the api. Once we acquire the API key we're good to go. This is how your Motion class looks like initially:
-
-```jsx
-class Motion extends Component {
- render() {
- return (
-
-
- Welcome to React Native!
-
-
- To get started, edit index.android.js
-
-
- Shake or press menu button for dev menu
-
-
- );
- }
-}
-```
-
-
-We need to add a constructor inside the Motion class. Inside the constructor we will initialize our state variables. At this point we need one state variable – moviesData. **moviesData** array is going to store all the JSON data fetched from the API.
-
-```jsx
-constructor(props) {
- super(props);
-
- var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
- this.state = {
- moviesData: ds.cloneWithRows([]),
- };
- }
-```
-
-
-Next, we will define a **fetchMoviesData** method, which will fetch the movies JSON from API. Add the following lines of code below the constructor code:
-
-
-```jsx
-fetchMoviesData() {
- var url = 'http://api.themoviedb.org/3/movie/now_playing?api_key=YOUR_API_KEY';
- fetch(url)
- .then( response => response.json() )
- .then( jsonData => {
- this.setState({
- moviesData: this.state.moviesData.cloneWithRows(jsonData.results),
- });
- })
- .catch( error => console.log('Error fetching: ' + error) );
- }
-```
-
-
-Next, we need to add the **componentDidMount** method. componentDidMount is a lifecycle method which is fired immediately after the first rendering occurs.
-
-
-
-
-
-Let's declare componentDidMount method and call the fetchMoviesData function inside it.
-
-
-```jsx
-componentDidMount() {
- this.fetchMoviesData();
- }
-```
-
-
-### 3. Creating the view
-
-We need to import some components which will be used in creating the view.
-
-
-```jsx
-import {
- AppRegistry,
- StyleSheet,
- Text,
- View,
- ListView,
- Image
-} from 'react-native';
-```
-
-
-**ListView** is a core component designed for efficient display of vertically scrolling lists of changing data. **Image** component is used for displaying different types of images, including network images, static resources, temporary local images, and images from local disk, such as the camera roll.
-
-Now, get rid of everything from inside Motion class's **render** method and add these lines of code:
-
-```jsx
-render() {
- return (
-
- );
-}
-```
-
-ListView's **renderRow** prop expects a template which needs to be rendered for each row. Add the following **renderRow** function inside the Motion class:
-
-```jsx
-renderRow(rowData){
- return (
-
-
- {rowData.title} (Rating: {Math.round( rowData.vote_average * 10 ) / 10})
-
- );
-}
-```
-
-We need to do one more thing before we can see the results. You can find the line that says `var styles = StyleSheet.create({` at the bottom. These styles are responsible for displaying the initial default screen. We can update these to show our movie listing in thumbnail list:
-
-
-```jsx
-const styles = StyleSheet.create({
- container: {
- backgroundColor: '#f2f2f2',
- },
- thumb: {
- backgroundColor: '#ffffff',
- marginBottom: 5,
- elevation: 1
- },
- img: {
- height: 300
- },
- txt: {
- margin: 10,
- fontSize: 16,
- textAlign: 'left'
- },
-});
-```
-
-
-Your app with latest movie listing is complete. You can open the terminal run `react-native run-android` to see your app. You can find the code for this app [here](https://github.com/balramkhichar/MotionApp). Enjoy!
-
-
-
-
-
-
-
-PS: This is the simple demo of the app. You can use pagination of the themoviedb API and build fully functional App. You can also implement the movie detail page using the React Native [Navigator](http://facebook.github.io/react-native/docs/navigator.html).
\ No newline at end of file
diff --git a/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-5.04.58-PM-1024x538.png b/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-5.04.58-PM-1024x538.png
deleted file mode 100644
index 4942140..0000000
Binary files a/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-5.04.58-PM-1024x538.png and /dev/null differ
diff --git a/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-5.35.52-PM.png b/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-5.35.52-PM.png
deleted file mode 100644
index 2600d4a..0000000
Binary files a/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-5.35.52-PM.png and /dev/null differ
diff --git a/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-8.23.10-PM-179x300.png b/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-8.23.10-PM-179x300.png
deleted file mode 100644
index ceb37f4..0000000
Binary files a/posts/react-native-android-app/images/Screen-Shot-2016-06-27-at-8.23.10-PM-179x300.png and /dev/null differ
diff --git a/posts/react-native-android-app/images/react-lifecycle.png b/posts/react-native-android-app/images/react-lifecycle.png
deleted file mode 100644
index b386c43..0000000
Binary files a/posts/react-native-android-app/images/react-lifecycle.png and /dev/null differ
diff --git a/posts/react-native-android-app/images/react-native-architecture.png b/posts/react-native-android-app/images/react-native-architecture.png
deleted file mode 100644
index 96fa53e..0000000
Binary files a/posts/react-native-android-app/images/react-native-architecture.png and /dev/null differ
diff --git a/posts/react-native-future-of-mobile-development/2017-04-03-5-REASONS-WHY-REACT-NATIVE-IS-THE-FUTURE-OF-MOBILE-DEVELOPMENT.md b/posts/react-native-future-of-mobile-development/2017-04-03-5-REASONS-WHY-REACT-NATIVE-IS-THE-FUTURE-OF-MOBILE-DEVELOPMENT.md
deleted file mode 100644
index dad375a..0000000
--- a/posts/react-native-future-of-mobile-development/2017-04-03-5-REASONS-WHY-REACT-NATIVE-IS-THE-FUTURE-OF-MOBILE-DEVELOPMENT.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-templateKey: 'blog-post'
-title: '5 REASONS WHY REACT NATIVE IS THE FUTURE OF MOBILE DEVELOPMENT'
-date: 2017-04-03
-featuredpost: false
-description: >-
- React Native is a popular Javascript framework for developing native applications for iOS and Android. Here are 5 reasons why React Native is the future.
-author: Anand Narayan
-link: /react-native-future-of-mobile-development
-category:
-- Research and Articles
-tags:
-- React Native
-- react native development
----
-React Native is the native version of the popular JavaScript library – ReactJS, maintained by the developers at Facebook and Instagram. With over 2 years in existence, React Native has gained massive popularity amongst the developer community. So much so that it is now the fourteenth most starred project of all time on GitHub. Google trends show that the ‘React Native’ as a search term has been search more than ‘iOS development’ and ‘Android development’.
-
-
-While there’s a new Javascript framework or library doing the rounds every other day, the React Native library has impressively maintained its status. We have been dabbling with the React library for sometime now, and have built quite a few apps using React Native. We believe React will be the future of mobile development, here are 5 reasons why:
-
-
-## 1. Cross Platform Compatibility
-Majority of the React Native APIs are cross platform, which means that your one component will work on both iOS and Android. You can develop complete, full blown applications that look, run and feel native – without writing a single line of platform specific code.
-
-There are instances, though, when you need to be platform specific. Design implications, for instance, are different on Android and iOS. React provides for such cases with its Platform module and Platform specific file extensions. The Platform module can detect the OS the app is running on, which can then be used to define platform specific implementations. Platform specific file extensions let you define files for specific platforms. React automatically picks up the correct file depending on the OS the app is running on.
-
-
-## 2. Shorter Development Cycles
-React Native makes the process of developing mobile apps much faster. There’s a huge developer community supporting React, and being an open source project – it has a lot of components available for use. We’ve seen development times drop by around 30% using open source components.
-
-Using Redux – the state management tool, has also helped reduce development times drastically. Creating one shared data layer for both iOS and Android makes it faster, with lower chances of failure.
-
-## 3. Live Updates and CodePush
-Developing native mobile applications with React Native has one very big advantage – Live Updates. Developers can push the updates to the users phone without having to go through the app store update cycle. This has been made possible due to the extensive use of Javascript.
-
-Longer approval times is more specific to iOS. But updating all your user’s apps on the fly ensures that you won’t have to deal with older version problems.
-
-Microsoft’s live update service CodePush SDK integrates with your React Native app allowing you to push updates to your app. The drawback is that only the Javascript file and the assets can be updated. Any update touching the Native OS side will have to go through the regular App Store or Play Store update process.
-
-## 4. React Native Builds Near Native Apps
-Mobile apps created using React Native perform as well as any native app. While Javascript is not as fast as native language (Swift or Java), React along with Javascript can run even the most complex of apps smoothly. The JS part of the code runs on its own thread, so your app’s UI animation won’t lag, no matter how heavy the compilations. Unless, ofcourse, the processes overlap.
-
-React Native apps are quite indistinguishable from native apps. Same UI building blocks that are used for native apps, just put together using React and Javascript. It also gives the developers an option to write code in native languages when required. It’s easy to switch to Swift of Java when fine-tuning a certain component.
-
-## 5. Better Development Environment
-Developers are having a better time developing on the React Native environment. Hot reloading refreshes the UI instantly when any changes are made to the file. Removing the mundane re-build and deploy from the iteration cycle makes for a pleasant development experience.
-
-React Native uses the Flexbox layout engine for both the platforms. This means you need to learn just one layout engine to develop on both iOS and Android. Flatter learning curves FTW!
-
-
-
-While there is no doubt that React Native makes developing mobile apps a breeze, the apps so developed are also very high quality. A lot of development companies are switching to React Native. The rich ecosystem and the vibrant, growing community are tell tale signs that React Native will soon become a norm for mobile app development.
-
-P.S If you’re looking for a [React Native development company](/react-native-development-company), give us a shout!
-
diff --git a/posts/reactive-subscriptions-in-meteor/2016-07-25-Reactive-Subscriptions-In-Meteor.md b/posts/reactive-subscriptions-in-meteor/2016-07-25-Reactive-Subscriptions-In-Meteor.md
deleted file mode 100644
index f385aae..0000000
--- a/posts/reactive-subscriptions-in-meteor/2016-07-25-Reactive-Subscriptions-In-Meteor.md
+++ /dev/null
@@ -1,114 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Reactive Subscriptions In Meteor'
-date: 2016-07-25
-featuredpost: false
-description: >-
- Meteor Subscriptions and Publications- This article shows how to write reactive subscriptions using Meteor's autorun for effective sync between remote data sources and the view.
-keywords:
-- Meteor Reactive subscriptions
-- Reactive subscription using Meteor
-author: Hari Krishna
-link: /reactive-subscriptions-in-meteor
-category:
-- Tutorial
-tags:
-- Meteor Development
-- Reactive subscriptions
----
-
-Publication and subscription concepts are as important as its getting misunderstood. Recently my friend Tarun wrote a tutorial on[ Meteor publications](/meteor-publications-and-subscriptions/), Now let’s dive deeper into subscriptions, but in a simpler way. This article shows how to write reactive subscriptions using Meteor’s autorun for effective sync between remote data sources and the view.
-
-Publication sends data to the client on subscribing to that end point. The data gets merged into MiniMongo collections. But there will be considerable amount of latency in receiving
-data after subscribing to it. We can use __subscription handlers__ provided in subscription function as callbacks. ```onReady()``` callback, is called when data is received and available in MiniMongo, then we query collection in MiniMongo and load data into the view. ```onStop()``` callback is called when subscription is stopped. In overview we will have a subset of mongoDB available on client side as MiniMongo.
-
-Code to show how data has to be fetched from MiniMongo collection through subscribing to ```listItems``` publication.
-```jsx
-if (Meteor.isClient) {
- // create a new instance of MiniMongo collection into which data received
- // from publication will be merged.
- var Items = new Mongo.Collection('items');
-
- Meteor.subscribe('listItems', {
-
- onReady: function () {
- // called when data is ready to be fetched from MiniMongo collection.
- var data = Items.find().fetch();
- // pass data to the view (React components or Blaze templates)
- },
-
- onStop: function () {
- // called when subscription is stopped
- }
- });
-}
-```
-However, this is not reactive. When the data changes in remote MongoDB, it will to be pushed into MiniMongo but will not be loaded into the view. Meteor does magic in keeping server and client collections in sync through DDP communication. But how will client get to know if new data has been received and it should query from MiniMongo again for updated data and load into the the view?. Let’s take a look at how it could be done.
-
-Meteor provides a reactive method ```.ready()``` which returns Boolean regarding the status of data received. It returns false until data is received by the client, then it returns true. In previous example we load data into view inside ```onReady()``` callback, now we do it other way.
-
-```js
-if (Meteor.isClient) {
-
- var Items = new Mongo.Collection('items');
-
- // subscribing to listItems
- var itemSub = Meteor.subscribe('listItems');
-
- // fetch data from collection when .ready() returns true
- if (itemSub.ready()){
- var data = Items.find().fetch();
- }
-}
-```
-This means whenever subscription handler ```.ready()``` is true, we load data into view. So when data changes in server, publication returns updated cursor which changes reactive data source, ```.ready()```. We need to keep watching ```.ready()``` function, whenever it changes we have to load the updated data to refresh the view. This process is more or less called as reactivity. View is in sync with remote source.
-
-## Meteor’s autorun tracker
-To keep watching ```.ready()```, Meteor provides autorun function. Basically, autorun runs the callback function, whenever the reactive data source used inside it changes. In this case, the reactive data source is ```.ready()```. If ```.ready()``` changes, we load the data into view. This is as shown below.
-
-Thus subscription is reactive and updates data into view automaticaly.
-
-```js
- var itemSub = Meteor.subscribe('listItems');
-
- Tracker.autorun(() => {
- // fetch data from collection when .ready() returns true
- if (itemSub.ready()){
- var data = Items.find().fetch();
- }
- });
-```
-## Stopping subscription when not in use
-We need to stop the subscription when we are no longer need of its data in MiniMongo.``` .stop() ```handler stops the subscription and removes data from MiniMongo. If we don’t use autorun. we need to call``` .stop() ```manually.
-
-```jsx
- var itemSub = Meteor.subscribe('listItems');
-
- // fetch data from collection when .ready() returns true
- if (itemSub.ready()){
- var data = Items.find().fetch();
- }
- // stopping the subscription when data is no longer needed.
- itemSub.stop();
-```
-But if we use autorun it takes care of stopping it when needed. Better explanation on functionality of autorun will be done in upcoming article.
-
-## Changing subscription arguments
-Sometimes we need to pass arguments along with subscription call, such as number of items you want or any filter. Publication returns data based on these arguments. Sometimes arguments keep changing. Good examples are pagination, filters etc., In these cases, a new subscription with other set of arguments is needed for new data. When we subscribe to same publication again, but with different arguments, and if it returns different data back then the previous subscription will be stopped and new request is sent to server. If data received by new subscription is same as previous one, then new one is stopped and old one is reused. The autorun works like charm in this case of re-subscribing with other arguments and updates data under the hood.
-
-```jsx
- Tracker.autorun(() => {
-
- // any means of receiving count or filter, either from
- // router params or from state
- let count = LocalState.get('listCount');
- var itemSub = Meteor.subscribe('listItems', count);
-
- // fetch data after subscription is ready
- if (itemSub.ready()) {
- var data = Items.find().fetch();
- }
- });
-}
-```
-This is all we need to know about how to make subscriptions reactive. Advanced concepts, sequence of stopping and starting of new subscription, exploring the autorun will be featured in next posts. Stay tuned!
\ No newline at end of file
diff --git a/posts/reactjsdevelopment-v16.0/2017-10-16-Why-the-latest-ReactJS-Development-Update-is-a-Game-changer(v16.0).md b/posts/reactjsdevelopment-v16.0/2017-10-16-Why-the-latest-ReactJS-Development-Update-is-a-Game-changer(v16.0).md
deleted file mode 100644
index 0e12bc5..0000000
--- a/posts/reactjsdevelopment-v16.0/2017-10-16-Why-the-latest-ReactJS-Development-Update-is-a-Game-changer(v16.0).md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Why the latest ReactJS Development Update is a Game-changer (v16.0)'
-date: 2017-10-16
-featuredpost: false
-description: >-
- The latest ReactJS development update uses a brand new core architecture called "Fiber". It is faster and makes error handling much easier.
-author: Prasanna
-link: /reactjsdevelopment-v16.0
-category:
-- Development
-tags:
-- react js
-- reactjs
----
-The latest ReactJS development update alters the core React algorithm to offer a ground-up rewrite on how React manages reconciliation.However React will maintain the same public API and that will allow for immediate upgrades for most projects. This will help improving React JS development process to be more effective than ever and it benefits the companies which adopt React JS. we are also sure this will be true for many of you as well.
-
-## Core Algorithm Rewrite
-In this latest ReactJS development update a new core architecture, named “Fiber” is introduced. Additionally, it has removed old internal abstractions that were hindering internal changes. Many new features in the ReactJS development update have been introduced due to “Fiber”, these include :
-
- Error boundaries
-
- Fragments
-
- Portals
-
- Async rendering
-
-Remember that the the API’s are still the same only the internal reconciliation algorithm has been rewritten. Therefore migrating to React 16 is seamless.
-
-
-
-## Backwards Compatible
-
-Fortunately React has shown a strong commitment to backwards compatibility. If you can run your code in React 15 without any deprecation warnings, it will work in React 16.
-
-## Error Handling
-
-Prior to this update, any error in any part of the UI would crash the whole application. To address this problem, a new concept has been introduced in React 16 called Error Boundary.
-
-These error boundaries will not only provide clearer error messaging, it will also prevent the entire application from crashing. Error boundaries catch errors and display a fallback UI without the entire component tree crashing. These boundaries catch errors in lifecycle methods, during rendering , and in constructors of the whole tree below them.
-
-The lifecycle event componentDidCatch() can be used to catch errors.
-
-## Easily readable error logs
-
-
-
-
-New architecture for error boundaries
-
-
-reactjs-development-3
-## More Efficient HTML(For server side rendering)
-React 16 also drastically cuts the quantity of SSR overhead in generated HTML. Additionally in React 16 all of the IDs have been have been removed from markup so the HTML is much simpler. Not only is this way more cleaner to read, it also reduces the size of the html document considerably.
-
-## React 16 is Faster
-React 16 shows dramatic speed ups in server-side rendering across multiple versions of node. In React 16 the core team rewrote the server renderer from from the ground up, so it doesn’t do any vDOM work at all. This is why it can be significantly faster.
-It has been reported from early adopters that they are witnessing a 1.3x speedup.
-
-
-
-## Portals
-Portals in React 16 will allow us to renders children in any DOM node regardless of it’s location in the DOM.
-
-
-## React 16 Can Deal With Arrays, Strings, and Numbers
-In React 16 the client-side renderer allows components to also return a string, a number, or an array of elements from a render method. This feature is also supported by React 16’s server-side rendering.
\ No newline at end of file
diff --git a/posts/reactjsdevelopment-v16.0/images/reactjs-development-1.png b/posts/reactjsdevelopment-v16.0/images/reactjs-development-1.png
deleted file mode 100644
index c3eab5a..0000000
Binary files a/posts/reactjsdevelopment-v16.0/images/reactjs-development-1.png and /dev/null differ
diff --git a/posts/reactjsdevelopment-v16.0/images/reactjs-development-2.png b/posts/reactjsdevelopment-v16.0/images/reactjs-development-2.png
deleted file mode 100644
index 9d5d22d..0000000
Binary files a/posts/reactjsdevelopment-v16.0/images/reactjs-development-2.png and /dev/null differ
diff --git a/posts/reactjsdevelopment-v16.0/images/reactjs-development-3.png b/posts/reactjsdevelopment-v16.0/images/reactjs-development-3.png
deleted file mode 100644
index a4b9f01..0000000
Binary files a/posts/reactjsdevelopment-v16.0/images/reactjs-development-3.png and /dev/null differ
diff --git a/posts/reactjsdevelopment-v16.0/images/reactjs-development.png b/posts/reactjsdevelopment-v16.0/images/reactjs-development.png
deleted file mode 100644
index 07577e9..0000000
Binary files a/posts/reactjsdevelopment-v16.0/images/reactjs-development.png and /dev/null differ
diff --git a/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/2017-09-10-Reselect-tutorial-Optimizing-React-Redux-application-development-with-Reselect.md b/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/2017-09-10-Reselect-tutorial-Optimizing-React-Redux-application-development-with-Reselect.md
deleted file mode 100644
index 42b0e73..0000000
--- a/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/2017-09-10-Reselect-tutorial-Optimizing-React-Redux-application-development-with-Reselect.md
+++ /dev/null
@@ -1,188 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Reselect tutorial. Optimizing React Redux application development with Reselect.'
-date: 2017-09-10
-featuredpost: false
-description: >-
- This blog can help in optimizing React Redux application. Reselect is a library which can be used in a React Redux application to optimize performance.
-keywords:
-- Reselect
-- React redux application
-- Optimizing React Redux application
-category:
-- Tutorial
-author: Prasanna
-link: /reselect-tutorial-optimizing-react-redux-application-development-with-reselect
----
-
-__React and Redux__ compliment each other well. React Components subscribe to Redux store due to which the child components re renders when the state (Redux state) is changed every time. So any component which is subscribed to Redux re renders when there is a state change (unless and until we mention not to do so). This is a prime reason for which there is a need for optimizing React Redux applications in order to avoid unnecessary re renders. [Reselect](https://github.com/reactjs/reselect) is a library which can be effectively used in a React Redux application for the same. In this __Reselect tutorial__ we will explore how Reselect will help in optimizing React Redux application.
-
-## How Redux Subscription works
-
-
-Before jumping straight away into Reselect, there are certain other ways in optimizing React Redux applications.
-
-
- Using React’s PureComponent, React shallow compares previous props and current props and avoid re rendering if there is no change.
-
-
- Using shouldComponentUpdate lifecycle we can selectively avoid re rendering of a React Component.
-
-
- Using functional components when there is no use of internal state. This avoids component lifecycle methods, which improves the speed of a React application.
-
-
-
-This can help in avoiding re rendering __unless and until there is a prop change which is consumed by the component.__
-
-## Reselect Concept
-According to the library’s homepage
-
-__Selectors can compute derived data, allowing Redux to store the minimal possible state.__
-Which can be considered as keep the store as minimal as possible. Compute any derived data through the selectors.
-
-__Selectors are efficient. A selector is not recomputed unless one of its arguments change.__
-A memoized selector that recalculates only when that part of the start tree changes which are input arguments to the selector. The value of selector doesn’t change when there is no change in other (unrelated) parts of the state tree.
-
-## What are selectors ?
-In our context, __selectors are nothing but functions which can compute or retrive data from the store__. We usually fetch the state data using mapStateToProps function like this.
-```jsx
-const mapStateToProps = (state) => {
- return {
- activeData: getActiveData(state.someData, state.isActive)
- }
-}
-```
-Where ```getActiveData``` will be a function which returns all the records from ```someData``` having the status as ```isActive``` .
-
-The drawback with this function is, whenever any part of the state state updates, this function will recalculate this data. In this case the calculation might be a very simple filter function. But what if this calculation takes 2-3 seconds every single time when the redux store gets updated. That too neither of the state’s data and isActive doesn’t change. This is where __Reselect__ comes to rescue. What Reselect does is unless the input parameters to the function doesn’t change, re calculation doesn’t happen.
-
-## How to write a ‘reselect’ selector ?
-When we use Reselect it caches the input arguments to the memoized function. So only when the arguments of the function changes from the previous call, the selector recalculates.
-
-For a above mapStateToProps function a normal selector would be written as
-```jsx
-const getActiveData = (someData, isActive) {
- // returns by filtering out all someData for which isActive set to true
-}
-```
-The same with reselect will be
-```jsx
-const getActiveData = createSelector([someData, isActive], (data, active) => {
- // callback is called only when someData or isActive changes
-}
-```
-Reselect provides a createSelector API for creating memoized selectors. createSelector takes an array of input-selectors and a transform function as its arguments. If the values of the input selectors are the same as the previous call to the selector, it will return the previously computed value.
-
-A memoized selector can itself be an input-selector to another memoized selector. This is a very useful technique since we can chain selectors so that if any part of the chain re calculates only selectors below will it re calculate.
-
-## Let’s look how Reselect can be utilized to optimize a React Application’s performance with an example
-Assume that there is a list of football player’s statistics displayed in the UI like this.
-
-
-
-It displays the number of goals scored and the average rating awarded to the players in the last 100 matches .
-The UI has features like
-
-__1.Selecting Goals scored by particular foot__. This changes the display by changing the goals scored by that specific foot. If none selected it should display goals scored by both the left and right foot.
-
-__2.Sorting by either Goals scored or average rating__. If selected it should sort by either number of goals scored or average rating). On default goals scored will be sorting criteria).
-
-Considering an API response like this, which is actually stored in Redux once fetched.
-For Each player the last 100 match data will be having a structure like
-```jsx
-// Each player data will be an object
-{
- name: ‘Ronaldo’,
- goalData: [
- {
- lefFootGoals: 1,
- rightFootGoals: 1,
- Rating: 8,
- } // ,.. Remaining matches data will follow
- ]
-}
-```
-To calculate and convert the data to the format which is required for UI we will structure selectors as follows
-
-
-
-In the above structure we are chaining ```footSelector``` -> ```calculatePlayerData``` -> ```sortSelector```. This means
-1.When the API data changes all three selectors re calculates.
-2.When the output of footSelector is changed it re calculates the player data since the goal count will change forcing sortSelector to recalculate.
-3.When we change the sorting criteria it just forces sortSelector to recalculate.
-
-And when there is no change in any of these data the output to the UI remains the same (from cached result).
-We will assume the redux store is maintained in immutable JS. (Refer [How to use immutable JS in a React Redux](https://codebrahma.com/how-to-use-immutable-js-in-a-react-redux-application/) application ).
-
-So in code the above selectors will be
-
-### Foot Selector
-```jsx
-// Footselector will return if the selectedFoot in the store is either "left" or "right" or "both"
-const footSelector = createSelector([state] => state.get('selectedFoot'));
-```
-### calculatePlayerDataSelector
-
-```jsx
-// footSelector is input to another selector - chaining
-export const calculatePlayerData = createSelector([apiData, footSelector], (data, foot) => {
- if (!data.isEmpty()) {
- return data
- .toSeq()
- .map(( eachPlayerData) => {
- const playerDataToTableFormat = eachPlayerData
- .get('goalData')
- .reduce((playerDataAccumulator, eachMatchData) => {
-
- const leftFootGoals = eachMatchData.get('leftFootGoals');
- const rightFootGoals = eachMatchData.get('rightFootGoals');
- const rating = eachMatchData.get('rating');
-
- let goalsScored = playerDataAccumulator.get('goals');
- let totalRating = playerDataAccumulator.get('totalRating');
-
- // Calculate goals scored by player based on the foot
- if (foot === 'left') {
- goalsScored += leftFootGoals;
- }
- else if (foot === 'right') {
- goalsScored += rightFootGoals;
- } else {
- goalsScored += (leftFootGoals + rightFootGoals);
- }
- return playerDataAccumulator
- .set('goals', goalsScored)
- .set('totalRating', totalRating + rating);
-
- }, Map({
- totalRating: 0,
- goals: 0,
- }))
- console.log(playerDataToTableFormat);
- return Map({
- name: eachPlayerData.get('name'),
- data: playerDataToTableFormat,
- })
- })
- .toJS()
- }
-});
-```
-
-Similarly we can write a ```sortSelector``` which will take ```calculatePlayerData``` as input and return the data sorted based on the selected criteria.
-
-## How this is different from calculation in the view ?
-The calculation logic remains the same as we generally do it in the view (component). What changes here is we calculate it once for the same input and keep it cached unless the input changes. Also if we are making a sequence of selectors as shown in the example, it re calculates from the selector whose input is actually changed (For example when footSelector’s parameters are changed it re renders)
-
-## Tips and Tricks
-__Expensive calculations:__
-In case of very expensive calculation the view might actually display with the older data, taking time to display the new data. From UI perspective we might feel that it was laggy.
-In these cases we can write another selector which handles whether the data recalculation part is actually completed or not. Depending upon the calculation status we can render a Preloader.
-
-__Reselect with multiple instances.__
-Sharing of selectors across components might yield wrong results if you are using the selector function straight away.This is because each instance on the component requires its own private selector. To handle this case we can write a function which will actually return a new instance of the selector function whenever called, so that each component will get its own private copy of the selector function.
-
-__So I have redux store, internal state, selectors and view. Where to store my data?__
-
-Keep the redux store as minimal as possible. A bloated state might actually make your app slow. Try to keep view as a direct representation of the data passed through props. You guessed it correctly, use functional components as much as possible with calculations performed inside selectors (Separation of concerns).
\ No newline at end of file
diff --git a/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/Reselect-tutorial.gif b/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/Reselect-tutorial.gif
deleted file mode 100644
index 20dc751..0000000
Binary files a/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/Reselect-tutorial.gif and /dev/null differ
diff --git a/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/optimizing-React-Redux-application-1.jpg b/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/optimizing-React-Redux-application-1.jpg
deleted file mode 100644
index 706185c..0000000
Binary files a/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/optimizing-React-Redux-application-1.jpg and /dev/null differ
diff --git a/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/optimizing-react-redux-application.jpg b/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/optimizing-react-redux-application.jpg
deleted file mode 100644
index b1531bd..0000000
Binary files a/posts/reselect-tutorial-optimizing-react-redux-application-development-with-reselect/images/optimizing-react-redux-application.jpg and /dev/null differ
diff --git a/posts/ruby-decorators/ruby-decorators.md b/posts/ruby-decorators/ruby-decorators.md
deleted file mode 100644
index dc60210..0000000
--- a/posts/ruby-decorators/ruby-decorators.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Ruby Decorators'
-date: 2014-04-28
-featuredpost: false
-description: >-
- Decorators allow us to add behavior to objects without affecting other objects of the same class. Codebrahma explaining ruby decorators, a key feature of ruby on rails.
-author: Abhishek Sarkar
-link: /ruby-decorators
-category:
-- Development
-tags:
-- Ruby on rails development
----
-
-Let us consider a problem in which we have a Car class. The top speed of any car is a maximum of 100kmph but by adding extra power packs to the car we can increase the speed of the car. These packs are Nitro and Boost. Nitro increases the speed of the car by 30kmph and Boost increases it by 50kmph. Also a car can add any number of these utilities to reach super high speeds.
-
-## Solving using Inheritance
-
-```ruby
-class Car
- def top_speed
- 100
- end
-end
-
-class CarWithNitro < Car
- def top_speed
- super + 30
- end
-end
-
-class CarWithBoost < Car
- def top_speed
- super + 50
- end
-end
-```
-
-
-The drawback of this pattern is * The subclasses are tightly coupled to the super class. Suppose if the we change the name of the method in the super class we need to make these changes to our subclasses as well. * No way of adding any packs to a car dynamically. If in a certain scenario we need a car with two nitro packs and three boost packs it's not easy with this architecture.
-
-## Enter the decorator pattern
-
-The decorator pattern allows you to attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.
-
-* A decorator is a wrapper object on the component class.
-* Has the same interface as the component it is decorating so that it's presence is transparent to the clients
-* Delegates requests to components
-* Performs additional actions before or after delegating
-
-## Applying decorator pattern to our problem step by step
-
-* The component class that we would want to add new features to or "Decorate" is "Car"
-* The decorators would be in this case "Nitro" and "Boost"
-
-Now that we have identified what decorators we need let's write it
-
-```ruby
-class Nitro
- # Wrapping the component class, Car object in this case
- def initialize(component)
- @component = component
- end
-
- # maintain the same public interface as component
- def top_speed
- # after delegation modify the value
- @component.top_speed + 30
- end
-end
-
-class Boost
- def initialize(component)
- @component = component
- end
-
- def top_speed
- @component.top_speed + 50
- end
-end
-```
-
-
-Now we can start using our decorators to add new packs to a car object.
-
-
-```java
-Nitro.new(Car.new).top_speed #130
-
-Nitro.new(Nitro.new(Car.new)).top_speed #160
-
-Boost.new(Nitro.new(Car.new)).top_speed #180
-```
-
-
-That's it, our shiny new power packed cars are ready to be driven 😉
diff --git a/posts/ruby-rescue-vs-try-vs-ternary/ruby-rescue-vs-try-vs-ternary.md b/posts/ruby-rescue-vs-try-vs-ternary/ruby-rescue-vs-try-vs-ternary.md
deleted file mode 100644
index 6ad0674..0000000
--- a/posts/ruby-rescue-vs-try-vs-ternary/ruby-rescue-vs-try-vs-ternary.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Ruby rescue vs try vs ternary'
-date: 2014-07-15
-featuredpost: false
-description: >-
- Codebrahma explaining different types of exception handling in ruby. Comparision between Ruby Rescue vs Try vs ternary.
-author: Nithin Krishna
-link: /ruby-rescue-vs-try-vs-ternary
-category:
-- Research and Articles
-tag:
-- Ruby on rails development
----
-
-All of us have faced this situation when, the current_resource object provided by devise turns out to be nil. All method invocations on current_resource on current_resource will throw an `undefined method for nil:NilClass` exception.
-
-To handle this, we can try one of the following.
-
-```ruby
-1. current_resource.name rescue nil
-2. current_resource.try(:name)
-3. current_resource ? current_resource.name : nil
-```
-
-But, what is the most efficient way? Let's find out.
-
-```ruby
-require 'benchmark'
-
-n = 5000000
-current_resource = nil
-
-Benchmark.bm do |x|
- x.report("rescue") do n.times { current_resource.name rescue nil } end
- x.report("try") do n.times { current_resource.try(:name) } end
- x.report("ternary") do n.times { current_resource ? current_resource.name : nil } end
-end
-
-
-user system total real
---------------------------------------------------------------
-rescue | 16.300000 | 0.600000 | 16.900000 | (16.910213)
-try | 0.7800000 | 0.000000 | 0.7800000 | ( 0.783828)
-ternary | 0.2800000 | 0.000000 | 0.2800000 | ( 0.277966)
-```
-
-Note that **rescue** is considerably inefficient compared to the other two (almost 60 times). **The Ternary operator** seems to be the most sound option.
-
-Refrences: [nithinkrishna.github.io][1]
-
-[1]: http://nithinkrishna.github.io/blog/Ruby-Rescue-Vs-Try-Vs-Ternary/
-
-
\ No newline at end of file
diff --git a/posts/software-outsourcing-find-right-tech-team-product/2016-11-04-Software-Outsourcing-How-To-Find -Right-Team-for-Your-Product.md b/posts/software-outsourcing-find-right-tech-team-product/2016-11-04-Software-Outsourcing-How-To-Find -Right-Team-for-Your-Product.md
deleted file mode 100644
index 2d536c5..0000000
--- a/posts/software-outsourcing-find-right-tech-team-product/2016-11-04-Software-Outsourcing-How-To-Find -Right-Team-for-Your-Product.md
+++ /dev/null
@@ -1,149 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Software Outsourcing: How To Find The Right Team for Your Product'
-date: 2016-11-04
-featuredpost: false
-description: >-
- How do you go about finding the right outsourced tech team for your product, when there are a zillion vendors available. We give you step by step approach.
-author: Anand Narayan
-link: /software-outsourcing-find-right-tech-team-product
-category:
-- Development
-tags:
-- outsourced software development
-- web application development
-- outsourced tech team
----
-
-To build a kickass product, you need a kickass team to work with you. Whether you’re a startup or looking to expand your business, hiring the right technical team is very crucial decision considering that they are going to be the architects of what you’re building. Finding the right people to work with is not easy (think the ever booming headhunting business). It’s a tiresome job to evaluate your technical requirements, expectations, design aspects and then map them against the people whom you’re trying to work with.
-
-Instead of hiring a technical team and keeping them on a payroll, you can very easily look towards outsourcing as a means to get your technical requirements fulfilled. Hiring an outsourced team reduces a lot of your work – but choosing the right one from the hoards of tech shops that have sprung up is another big question.
-
-A simple Google search for the ‘web development companies’ or ‘software development companies’ will give you an idea of how big the tech outsourcing industry actually is – finding the right partner can be a daunting task.
-
-
-
-The following points will help you find the right outsourced tech team for your business:
-
-
-
-## Background
-
-
-A little bit of research about the background of the company will give you a clearer picture of what they are all about.
-
-__Previous projects:__ Start with previous projects the company has worked on. Judging on the companies they worked with, you might get an idea about their reputation. Also, not being associated with big names doesn’t necessarily make them bad, it’s all about the quality of work they do.
-
-_Pro tip:_ Try and see if any of their projects are live, and see if you can get your hands on it.
-
-
-
-__Relate:__ Go through the list of past projects and see if they have anything similar to what you are looking to build. For example, if you are looking to build a chat application for iOS, see if they have made anything along the same lines. Dig deep and see their areas of expertise and analyse if it’s something that interests you.
-
-_Pro tip:_ Relatable projects means that the team has experience in that specific domain, this means faster execution, better understanding of requirements and foreseeable flaws.
-
-
-
-## Services
-
-
-This includes what all they have to offer and relate it with what will you need for your project.
-
-
-
-__Platforms and Technologies:__ Almost every company offers to build on Android and iOS. Dig deeper if you are looking for something different like BlackBerry, Windows mobile or require for multiple platforms. If you’re looking to build a web application, see which backend technologies they work on. PHP and .NET are technologies which are losing popularity day by day. You need to make sure that your technology stack is future proof.
-
-_Pro tip:_ Look for expertise in Javascript based frameworks (Node, Meteor etc), Ruby on Rails or Python.
-
-
-
-__Design:__ This is a very crucial aspect, especially if you’re looking to build a consumer facing product. Implementing design as per the design mockups is something very few frontend developers are good at. Your screens need to work perfectly with every device type and screen size – achieving a near pixel perfect implementation. Look keenly at their designs, try loading in on your phone, resize the browser window to see how well their designs respond. Understand which technologies they use for developing the front end, you don’t want designs which reek of 2005.
-
-_Pro tip:_ ReactJS and AngularJS are really popular and are used by almost all the good looking applications.
-
-
-
-__Pricing:__ Pricing is subjective and varies with companies. Usually, the technology companies charge a flat per hour rate. They estimate the time for your project and multiply it with their flat per hour rate. It is absolutely essential to know the standard hourly price and an estimated timeline for your project before you go any further.
-
-
-
-## Team
-
-
-Knowing about the team you’ll be working with is only natural. The strength of the team, their expertise and availability – might affect your product somehow.
-
-
-
-__Size:__ Size of the team is an important aspect. Growing companies generally mean that they have a lot of incoming projects, which is a good sign. You wouldn’t want to work with someone who is on the brink of shutting shop.
-
-
-
-__Who they are:__ A typical team consists of developers, project managers, and a technical lead. Speak to the team you’ll be assigned with before making a decision. You’ll be working a lot with these guys, so make sure you feel confident and comfortable with them.
-
-
-
-__Availability:__ See how and at what times is the team going to be available to you. Make sure you have a stable Point of Contact with the outsourcing company you can get in touch with whenever you need to. Check beforehand if the team can be contacted during non-working hours or weekends if required.
-
-
-
-## Communication & Project Management
-
-
-Communication is the key to any successful outsourced project. Converse with your expected team members to make sure that both parties are able to fully comprehend whatever is being said. This is becomes a lot more important when you’re outsourcing your project internationally. Make sure there’s no language barrier before you start.
-
-Project management is another area you need to look into. Understand which tools the team is using, which development methodology they follow (Agile, Waterflow etc) and if you’re comfortable with them.
-
-_Pro tip:_ A face to face meeting before starting on the project will be really beneficial!
-
-
-
-__Getting started:__ It begins with what you have in mind about the idea and conveying the same. Adequate documentation can be really helpful. Be clear if you already have some design ideas, workflow, images that you’d like on the app.
-
-
-
-
-__Status Meetings:__ This includes how often will you be contacting the team for status reports. It is advised to stay in touch with team regularly and that the progress be documented religiously. If your outsourced team follows Agile – you can expect daily standups and weekly/fortnightly demos.
-
-
-
-__Project management and communication tools:__ There are a bunch of tools out there to facilitate project management and communication. Just make sure that you’re comfortable with whatever tools your outsourced technical team is using. If you’re already using certain tools – check if they’d be willing to move to yours.
-
-
-
-## Project Delivery
-
-
-__Deadline:__ Every project that the outsourced team handles comes with a deadline, unless you’re hiring them on a T&M basis. That being said, it’s upto you to make sure that every party involved with the project does their part on a timely basis. Very often the projects get delayed and end up in finger pointing – make sure you take necessary steps to ensure this does not happen.
-
-
-
-__Delays:__ As the project progresses new hurdles/bugs might creep in. Take all the possible factors into consideration that will delay the completion and come to strategic approach on how to minimise and deal with it. Talk to your vendors and clear out any concerns regarding delays. Every vendor has a different approach to handling delays – be sure to understand them before getting into business with them.
-
-
-
-__Bugs and Issues:__ Once the project is completed, be sure to check for any issues and bugs. Ask the vendor how they handle bugs reported after the project is completed and how long will they accept reported issues. If possible, Be sure to spend adequate time testing your product.
-
-_Pro tip:_ Ask your team to write out test cases even before starting the development work. This approach is called Test Driven Development.
-
-
-
-## Post Delivery
-
-
-__Maintenance:__ Delivering the project isn’t the end of the road. There is always a possibility for technical discrepancies later, keeping this in mind, know if your team will be able to help in the future or not.
-
-
-
-__Assistance:__ Once the website goes live, it’s time to grow and traffic and get leads. will the tech team be able to facilitate with SEO and monetisation for marketing purposes.
-
-
-
-__Billing:__ The whole project should essentially be broken down into milestones and partial payments be charged against them. A contract is usually signed beforehand, that lays out all the milestones and costs associated. Be sure to clear out with the vendor partners, what happens in case the timelines are not met.
-
-
-
-We hope this makes a lot of things clear, when it comes to outsourcing the development of your technology product. Everything we’ve have mentioned above comes from our own experience of running a technology services company for about 4 years, and delivering over 40 successful projects.
-
-In case you’re looking for hiring an outsourced team for your development, [be sure to reach out to us!](/contact)
-
-
diff --git a/posts/structuring-async-operations-react-redux-applications/2017-07-03-Async-operations-in-React-Redux-applications.md b/posts/structuring-async-operations-react-redux-applications/2017-07-03-Async-operations-in-React-Redux-applications.md
deleted file mode 100644
index d52283a..0000000
--- a/posts/structuring-async-operations-react-redux-applications/2017-07-03-Async-operations-in-React-Redux-applications.md
+++ /dev/null
@@ -1,297 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Async operations in React Redux applications'
-date: 2017-07-03
-featuredpost: false
-description: >-
- Introduction Javascript is a single thread programming language. That is when you have code something like this The second line doesn’t get executed till the first one gets completed. Mostly this won’t be a problem since millions of calculations are
-keywords:
-- ReactJS
-- async requests
-- redux-saga
-- developing with ReactJS
-- network request
-link: /structuring-async-operations-react-redux-applications
-category:
-- Development
-author: Prasanna
----
-
-## Introduction
-Javascript is a single thread programming language. That is when you have code something like this
-
-
-
-The second line doesn’t get executed till the first one gets completed. Mostly this won’t be a problem since millions of calculations are performed by the client or server in a second. We can notice the effects only when we are performing a costly calculation (A task that takes noticeable time to complete, a network request which takes some time to return back).
-
-__Why did I show only API call (network request) here ? What about other async operations ?__
-API call is a very simple and best example of describing how to deal asynchronous operation. There are other operations like ```setTimeout()``` , performance heavy calculations, image loading and any event driven operations.
-
-While structuring our application we need to consider how asynchronous execution impacts structuring. For example consider ```fetch()``` as function which performs a API call (network request) from the browser. (Forget if it is an AJAX request. Just think of the behaviour as either asynchronous or synchronous in nature). The time elapsed while the request is processed on the server doesn’t happen on the main thread. So your JS code will keep getting executed and once the request returns a response it will update the thread.
-
-Consider this code
-```
-userId = fetch(userEndPoint); // Fetch userId from the userEndpoint
-userDetails = fetch(userEndpoint, userId) // Fetch for this particular userId.
-```
-In this case since ```fetch()``` is asynchronous we won’t be having userId when we try to fetch userDetails. So we need to structure it in way which ensures second line executes only when the first returns a response.
-
-Most of the modern implementation of network requests are asynchronous in nature. But this doesn’t help always since we depend on the previous API response data for the subsequent API calls. Lets look at how particularly we can structure this in React JS + Redux Applications.
-
-## Async operations in React – Redux applications.
-React JS is a front end library which is used for making user interfaces. Redux is a state container which can manage the whole state of the application. With React JS in combination with Redux we can make efficient applications that can scale well. There are several ways to structure async operations in such a React JS application. For each method lets discuss about the Pros and Cons in terms of
-
-- Code Clarity
-- Scalability
-- Ease of error handling
-
-For each method we will perform these two API calls.
-
- #### 1. Fetching city from userDetails (First API response).
-Lets assume the endpoint is ‘/details’. It will have city in the response. Response will be an object.
-
-```js
-userDetails : {
- ...
- city: 'city',
- ...
-};
-```
- #### 2. Based on the user city we will fetch all restaurants in the city
-Lets say the endpoint is ```/restuarants/:city```. Response will be an array
-```js
-['restaurant1', 'restaurant2', ...]
-```
-Remember that we can do the second request only when we finish doing the first (Since it is dependent on the first request). Lets discuss various ways to do this.
-
-- Directly using promise or async await with set state.
-- Using redux thunk.
-- Using Redux saga.
-- Using Redux Observables.
-
-Particularly I have chosen the above methods because they are the most popularly used for a large scale project. There are still other methods which can be more specific to particular tasks which don’t have all the features which are required for a complex app(redux-async, redux-promise, redux-async-queue to name a few).
-
-## Promises:
-Javascript ```Promise``` is an object that may provide a single value sometime in the future either a resolved or the reason why it was not resolved.
-
-In our case we will use [axios](https://github.com/mzabriskie/axios) library to fetch, which returns a promise when we make a network request. That promise may resolve and return the response or throw an error. So once the React Component mounts we can straight away fetch like this.
-```jsx
-componentDidMount() {
- axios.get('/details') // Get user details
- .then(response => {
- const userCity = response.city;
- axios.get(`/restaurants/${userCity}`)
- .then(restaurantResponse => {
- this.setState({
- listOfRestaurants: restaurantResponse, // Sets the state
- })
- })
- })
-}
-```
-By this when the state changes (due to fetching…) Component will automatically re render and load the list of restaurants.
-
-```Async await ```is a new implementation with which we can make async operations. For example the same thing can be achieved by
-```jsx
-async componentDidMount() {
- const restaurantResponse = await axios.get('/details') // Get user details
- .then(response => {
- const userCity = response.city;
- axios.get(`/restaurants/${userCity}`)
- .then(restaurantResponse => restaurantResponse
- });
-
- this.setState({
- restaurantResponse,
- });
-}
-```
-Both of these are the simplest of all methods. Since the entire logic is inside component, we can easily fetch all the data once the component loads.
-
-## Drawbacks in the method:
-The problem will be when we will be doing complex interactions based on the data. For example consider the following cases
-
-
-
-We don’t want the thread in which JS is being executed to be blocked for network request
-All the above cases will make the code very complex and difficult to maintain and test.
-Also scalability will be a big issue since if we plan to change the flow of the app then we need to remove all the fetches from the component.
-Imagine doing the same if the component is at the top of the parent child tree. Then we need to change all the data dependent presentational components.
-Also to note, the entire business logic is inside the component.
-__How we can improve from here ?__
-
-
-#### 1. State Management
-In these cases using a global store will actually solve half of our problems. We will be using Redux as our global store.
-
-#### 2. Moving business logic to correct place
-If we think of moving our business logic outside of the component then where exactly can we do that ? In actions ? In reducers ? By middlewares ?. The architecture of redux is such that it is synchronous in nature. The moment you dispatch an action (JS objects) which when reaches the store, the reducer acts upon it.
-
-#### 3. Ensuring to have a separate thread where async code is executed and any change to global state can be retrieved through subscription
-
-
-
-From this we can get an idea that if we are moving all the fetching logic before reducer, that is either action or middlewares then it is possible to dispatch the correct action at the correct time.
-For example once the fetch started we can ```dispatch({ type: ‘FETCH_STARTED’ }) ```and when the fetch completed we can ```dispatch({ type: ‘FETCH_SUCCESS’ })``` .
-
-
-> [Want to develop React JS application ?](/react-js-development/)
-
-
-## Using Redux thunk
-__‘Redux-thunk’__ is a middleware for redux. It basically allows us to return ```function``` instead of ```objects``` as an action. How this helps exactly is, it provides dispatch and getState as arguments for the function. We use the dispatch effectively by dispatching the necessary actions at the right time. The benefits are
-
-Allow multiple dispatch inside the function.
-Business logic related to the fetch will be outside of react components and moved to actions.
-
-In our case we can rewrite the action like
-```jsx
-export const getRestaurants = () => {
- return (dispatch) => {
- dispatch(fetchStarted()); // fetchStarted() returns an action
-
- fetch('/details')
- .then((response) => {
- dispatch(fetchUserDetailsSuccess()); // fetchUserDetailsSuccess returns an action
- return response;
- })
- .then(details => details.city)
- .then(city => fetch('/restaurants/city'))
- .then((response) => {
- dispatch(fetchRestaurantsSuccess(response)) // fetchRestaurantsSuccess(response) returns an action with the data
- })
- .catch(() => dispatch(fetchError())); // fetchError() returns an action with error object
- };
-}
-```
-As you can see we now have a good control of when to ```dispatch``` what type of action. Each function call like fetchStarted(), fetchUserDetailsSuccess(), fetchRestaurantsSuccess() and fetchError() dispatches a plain javascript object of a type and additional details if required. So now it is the job of the reducers to handle each action and update the view. I haven’t discussed about the reducer since it is straightforward from here and the implementation might be varying.
-
-For this to work we need to connect the React component with redux and bind the action with the component using ‘redux’ library. Once this is done we can simply call this.props.getRestaurants() which in turn will handle all the above tasks and update the view based on the reducer.
-
-In terms of its scalability __redux-thunk__ can be used in apps which doesn’t involve complex controls over async actions. Also it works seamlessly with other libraries as discussed in the topics of the next section.
-
-But still it is little difficult to do certain tasks using redux-thunk. For example we need to pause the fetch in between or when there are multiple such calls allow only the latest or if some other API fetches this data and we need to cancel ?
-
-We can still implement those, but it will be little complicated to do exactly. Code clarity for complex tasks will be little poor when compared with other libraries and maintaining it will be difficult.
-
-### Using Redux saga
-
-Using _redux-saga_ middleware we can get additional benefits which solves most of the above mentioned functionalities. Redux-saga was developed based on es6 [generators](https://davidwalsh.name/es6-generators).
-
-Redux-saga provides API which helps in achieving
-
-- Blocking events which blocks the thread in the same line till something in achieved.
-- Non blocking events which makes the code async.
-- Handling race between multiple async requests.
-- Pause / Throttle / Debounce any action.
-### How Sagas Work ?
-
-Saga uses a combination of ES6 generators and async await APIs to simplify the async operations. It basically does it works on a separate thread where we can do multiple API calls. We can use their API to make each call synchronous or asynchronous depending on the use case. The API provides functionalities by which we can make the thread to wait in the same line till the request returns a response. Apart from this there are lot of other API provided by this library which makes API requests very easy to handle.
-
-Consider our previous example,
-If we initialize the saga and configure it with redux as mentioned in their documentation then we can do something like
-```jsx
-import { takeEvery, call } from 'redux-saga/effects';
-import request from 'axios';
-function* fetchRestaurantSaga() {
- // Dispatches this action once started
- yield put({ type: 'FETCH_RESTAURANTS_INITIATED '});
- try {
- // config for fetching details API
- const detailsApiConfig = {
- method: 'get',
- url: '/details'
- };
- // Blocks the code at this line till it is executed
- const userDetails = yield call(request, config);
- // config for fetching details API
- const restaurantsApiConfig = (city) {
- method: 'get',
- url: `/restaurants/${city}`,
- };
- // Fetches all restuarants
- const restaurants = yield call(request, restaurantsApiConfig(userDetails.city));
-
- // On success dispatch the restaurants
- yield put({
- type: 'FETCH_RESTAURANTS_SUCCESS',
- payload: {
- restaurants
- },
- });
- } catch (e) {
- // On error dispatch the error message
- yield put({
- type: 'FETCH_RESTAURANTS_ERROR',
- payload: {
- errorMessage: e,
- }
- });
- }
-}
-export default function* fetchRestaurantSagaMonitor() {
- yield takeEvery('FETCH_RESTAURANTS', fetchInitial); // Takes every such request
-}
-```
-
-So if we dispatch a simple action with type ‘FETCH_RESTAURANTS’, the saga middleware will listen and respond. Actually none of the Actions get consumed by the middleware. It just listens and does some additional tasks and dispatches new action if required. By using this architecture we can dispatch multiple requests each describing
-
-- When the first request started
-- When the first request finished
-- When the second request started
-- … So on
-
-Also you can see the beauty of ```fetchRestaurantsSaga()``` . We have currently used call API for implementing blocking calls. Sagas provide other API like fork which implements non blocking calls. We can combine both blocking and nonblocking calls to maintain a structure which fits our application.
-
-In terms of scalability, using sagas is beneficial.
-
-- We can structure and group sagas based on any particular tasks. We can trigger one saga from another by simply dispatching an action.
-
-- since it is a middleware, actions that we write will be plain JS objects unlike thunk.
-
-- since we move the business logic inside sagas (which is a middleware), if we know what will be the functionality of saga then understanding the React part of it will be much easy.
-
-- Errors can be easily monitored and dispatched to the store by try catch pattern.
-
-## Using redux-observables
-
-As mentioned in their doc “An epic is the core primitive of redux-observable”.
-1. An Epic is a function which takes a stream of actions and returns a stream of actions. That is Epic runs alongside normal Redux dispatch channel, after the reducers have already received them.
-
-2. Actions always run through your reducers before epics even recieve them. Epic just recieves and outputs another stream of actions. This is almost similar to redux-saga that none of the Actions get consumed by the middleware. It just listens and does some additional tasks.
-
-For our task we can simply write
-```jsx
-const fetchUserDetails = action$ => (
- action$.ofType('FETCH_RESTAURANTS')
- .switchMap(() =>
- ajax.getJSON('/details')
- .map(response => response.userDetails.city)
- .switchMap(() =>
- ajax.getJSON(`/restaurants/city/`)
- .map(response => ({ type: 'FETCH_RESTAURANTS_SUCCESS', payload: response.restaurants })) // Dispatching after success
-)
- .catch(error => Observable.of({ type: 'FETCH_USER_DETAILS_FAILURE', error }))
- )
- )
-)
-```
-At first this might look little confusing. But the more you understand RxJS the easier is to create an Epic.
-
-As in the case of sagas we can dispatch multiple actions each one describing at what part of the API request chain the thread currently is in.
-
-In terms of scalability we can split Epics or compose Epics based on particular tasks. So this library can help in building scalable application. Code clarity is good if we understand the Observable pattern of writing code.
-
-
-> More Blogs on React Js Development
-
-### My Preferences
-
-__How do you determine which library to use ?__
-It depends on how complex our API requests are.
-
-__How do you choose between redux-saga and redux-observable?__
-It comes down to the learning generators or RxJS. Both are different concepts but equally good enough. I would suggest to try both to see which one fits you perfectly.
-
-__Where do you keep your business logic dealing with APIs.?__
-Preferably before reducer but not in the component. Best way would be in middleware (using sagas or observables)
\ No newline at end of file
diff --git a/posts/structuring-async-operations-react-redux-applications/images/async-react-redux.gif b/posts/structuring-async-operations-react-redux-applications/images/async-react-redux.gif
deleted file mode 100644
index ce0f933..0000000
Binary files a/posts/structuring-async-operations-react-redux-applications/images/async-react-redux.gif and /dev/null differ
diff --git a/posts/structuring-async-operations-react-redux-applications/images/async-state-questions.jpg b/posts/structuring-async-operations-react-redux-applications/images/async-state-questions.jpg
deleted file mode 100644
index 4615ceb..0000000
Binary files a/posts/structuring-async-operations-react-redux-applications/images/async-state-questions.jpg and /dev/null differ
diff --git a/posts/structuring-async-operations-react-redux-applications/images/redux-architecture.gif b/posts/structuring-async-operations-react-redux-applications/images/redux-architecture.gif
deleted file mode 100644
index ce006cd..0000000
Binary files a/posts/structuring-async-operations-react-redux-applications/images/redux-architecture.gif and /dev/null differ
diff --git "a/posts/swiss-knife-analytics-chat-dipankar-founder-octo-ai/2016-10-25-Swiss-knife-of-analytics\342\200\231:-A -With-The-Founder-of-Octo.md" "b/posts/swiss-knife-analytics-chat-dipankar-founder-octo-ai/2016-10-25-Swiss-knife-of-analytics\342\200\231:-A -With-The-Founder-of-Octo.md"
deleted file mode 100644
index 5ade767..0000000
--- "a/posts/swiss-knife-analytics-chat-dipankar-founder-octo-ai/2016-10-25-Swiss-knife-of-analytics\342\200\231:-A -With-The-Founder-of-Octo.md"
+++ /dev/null
@@ -1,138 +0,0 @@
----
-templateKey: 'blog-post'
-title: '‘Swiss knife of analytics’: A Chat With The Founder of Octo.ai'
-date: 2016-10-25
-featuredpost: false
-description: >-
- As a premium engineering product company we have delivered not just projects, but success stories for entrepreneurs. For every project we take, there is a back story. Story of why it happened and story of the struggle to make
-author: Anand Narayan
-link: /swiss-knife-analytics-chat-dipankar-founder-octo-ai
-category:
-- Business
-tags:
-- analytics
-- automation in marketing
-- founders
----
-
-
-
-
-As a premium engineering product company we have delivered not just projects, but success stories for entrepreneurs. For every project we take, there is a back story. Story of why it happened and story of the struggle to make it happen.
-
-Only a founder knows the real struggle – the journey of nurturing a small idea into reality, going against all odds.
-
-We’ll be interviewing entrepreneurs who’ve seen it all, pick their brains and share their stories with you so you might be able
-
-In the first edition, we begin with [Dipankar Sarkar](https://twitter.com/dipankarsarkar), the founder of [Octo.ai](https://octo.ai/), an open source analytics platform that is taking everyone by storm. They have a staggering 370 plus upvotes on Product Hunt, and were trending there for a couple of days! Based on artificial intelligence and machine learning, Octo.ai has raised $200,000 recently from investors and plans to take a shot at mainstream analytics tools.
-
-Let’s get to know more about Dipankar and his entrepreneurial journey.
-
-__Congratulations on raising funds for Octo. That’s big news! Before we get into specifics – can you tell us a bit about yourself?__
-
-This is always a tough one to answer, with the context in mind here it goes.
-
-I would describe myself as a builder and thinker. I have an engineering degree from IIT Delhi in computer science, during my student days I figured that building for the Internet was my passion.
-
-The awesome founders & seniors at Slideshare were nice enough to give me a platform. With great mentors and high quality work that got my career started, I am proud to be an early member of a well known internet product.
-
-This is what got the startup bug into me, and I have continued following my passion for startups ever since. Did quite a few by myself, but Octo.ai has been one of the most interesting journeys among them.
-
-
-
-__How did the idea for your business come about? What ignited the spark to get into machine learning?__
-
-The credit for the initial idea for Octo goes to my wife.
-
-In mid-2014, I saw her completing a transaction with a clothes seller in Gujarat on WhatsApp. That lead me to believe that bots inside WhatsApp would really enable commerce and act as an online to offline bridge. That is how AAHIT was built out.
-
-As we went to angels for raising capital, it became clear that being inside WhatsApp without official APIs was a big risk for them. Based on that feedback we went on to build a mobile application based consumer bot.
-
-In that development process, we realized that there was a bigger opportunity in marketing automation and AI and that’s how Octomatic was born.
-
-Of course, the engineering – be it NLP (natural language processing) or ML (machine learning) – was built for the various products developed. This was an extension of my interest in heuristics and algorithms.
-
-
-
-__With AAHIT – An intelligent Whatsapp bot, you had gained good initial traction with 20,000+ users. What happened there?__
-
-We had built something interesting and had traction. To take things forward and expand our reach, we raised some funds. We soon realized that the amount of money it’ll take to challenge the bigger players was way too much.
-
-Haptik and Helpchat had way too many resources at their disposal. Technology was not the primary question with the kind of capital competitors had raised.
-
-
-
-__How important is it to find the right partner/co-founder?__
-
-It is possibly the most important choice to make. The character of the company is defined by those early choices for the team.
-
-
-
-__Incase finding a partner proves difficult, would you suggest looking towards a tech services company for help?__
-
-If it is a core tech company, then you need someone who understands it in the founding team.
-
-If tech is an enabler, outsourcing that capability is actually recommended. Though, someone again must have some basic tech experience for a positive outcome.
-
-
-
-
-__How did the idea of Octo.ai come around?__
-
-Octo.ai is a product of how we think data science for consumers will evolve. We initially started building chatbots, then moved to enterprise SaaS with octomatic and now, an enterprise Open Source company.
-
-We are proposing that for software to perform any sort of intelligence, it needs to collect data. The valuable data for Octo.ai is user interactions. The more data it collects, the smarter it becomes. Context is derived from data, which in turn is the basis of decisions made by the software.
-
-
-
-__There exist a lot of analytics tools. And it looks like you’ll be, more or less, competing with big players like Google Analytics and Mixpanel. Right?__
-
-Yes and No.
-
-Yes. Our Open Source framework eliminates third party analytics including Google Analytics and Mixpanel, you should be storing your data on your own servers and running business intelligence (outsourced or internally) on top of it (instead of trusting third party tools with your data). We are competing with segment.io, but they are a closed source system.
-
-No. What we are offering to enterprise clients is segment of one marketing automation, it learns user behavior and targets them intelligently to pull them back into the system. Effectively, increasing retention and potential conversions within the system. This is right at the intersection of high-end analytics and marketing automation. There are no players in this vertical.
-
-
-
-__Could you give us a business case that’ll set you apart from analytics competition?__
-
-The business case is storing your user’s context and mining it for increasing retention and conversions. We will super charge the marketing team that attempts to understand analytics and create marketing automation campaigns.
-
-Our belief is that once marketing sets goals, the intelligence must personalize for each user at any scale. Campaigns are, after all built with the goal of capturing and converting latent users manually.
-
-__What other tech can Octo be used/integrated with?__
-
-When we built Octo.ai we looked at it as the operating system for the big data. Healthtech and IoT are a natural fit.
-
-Octo.ai has been designed from ground up to collect data – perform analysis and has a feedback loop to learn as more and more data enters the system.
-One of the biggest use cases I see is a future where health product aggregators, fitness bands and health care services become one big offering. A system designed in a way that tracks and stores data from different services, performs calculations and gives actionable metrics to the users.
-
-This future is very near – we’ll slowly see different sub verticals coming together to offer a more holistic solution to users and at the core of it all, will be data.
-
-Possibilities – they sure are endless.
-
-
-
-__How do you define success and what would you say are the essential skills needed to be a successful entrepreneur?__
-
-At a personal level, I view success as being able to keep doing the things that I like. My joy is derived out of building and people using my work.
-
-The only skill is the willingness to learn and listen, rest follows.
-
-
-
-__I think every founder has a fair share of ups and downs, and lessons learned from them. If you could go back in time again and have a fresh start – what would you do differently?__
-
-I would not do anything differently.
-
-The present moment is a result of all that has gone right and wrong, no regrets.
-
-
-
-__Advice to young entrepreneurs out there?__
-
-Get used to the chaos and friction, keep up the fight!
-
-As one of my classmates would always say, “Kyonki Fighter Hamesha Jeet-ta Hai”
-(Because one who fights always wins)
diff --git a/posts/swiss-knife-analytics-chat-dipankar-founder-octo-ai/images/after.png b/posts/swiss-knife-analytics-chat-dipankar-founder-octo-ai/images/after.png
deleted file mode 100644
index ebda53c..0000000
Binary files a/posts/swiss-knife-analytics-chat-dipankar-founder-octo-ai/images/after.png and /dev/null differ
diff --git a/posts/technology-driven-disruption-insurance-industry/2017-05-19-Technology-Driven-Disruption-of-the-Insurance-Industry.md b/posts/technology-driven-disruption-insurance-industry/2017-05-19-Technology-Driven-Disruption-of-the-Insurance-Industry.md
deleted file mode 100644
index 667cfdb..0000000
--- a/posts/technology-driven-disruption-insurance-industry/2017-05-19-Technology-Driven-Disruption-of-the-Insurance-Industry.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Technology Driven Disruption of the Insurance Industry'
-date: 2017-05-19
-featuredpost: false
-description: >-
- Insurance companies have a lot to gain from the recent advancements in technology. We take a look at how they can use tech to win their digital customers.
-keywords:
-- mobile apps for insurance companies
-- insurance technology
-- software for insurance companies
-link: /technology-driven-disruption-insurance-industry
-category:
-- Business
-tags:
-- applications for insurance companies
-- fintech
-- insurance tech
-author: Anand Narayan
----
-Rapid advancements in technology has changed the way businesses run their processes and interact with their customers. Every sector, no matter how tradition – is seeing a radical change. Cloud based services have made even the most revered technologies, like machine learning and artificial intelligence, accessible to the every business. Commodification has allowed every business, no matter the size, to experiment with the latest advancements.
-
-The insurance sector is seeing a shift, rather slowly however, in how they run their processes. The digital age has given rise to competition, where the established names must compete with the startups of today, on the platform their customers live on. Insurance companies are looking towards technology to help them win the digital customer, streamline internal processes, and generally make the process a lot less dreadful for the customer.
-
-Here are some technology applications, we think can be a game changer for insurance companies.
-
-
-
-
-## Data Driven Approach To Insurance
-Availability of data and the ability to make sense out of the huge amounts, in near real time, can change the way insurance companies evaluate applications. Traditional method of relying on historical data, with predefined methods and partial subjectivity can now be replaced with more accurate, case-to-case evaluation of applications.
-
-Not just issuance, even insurance claims can be made a lot more objective. Motor insurance claims could be evaluated more objectively thanks to IoT. Health insurance claims can be almost instant with a central repository of patient data, securely stored on the cloud – accessible to authorized personels only. Fraud detection algorithms can be made more intelligent by continuously feeding them data with a near real time feedback loop.
-
-
-## Leveraging Platform and Cloud Economy
-Platform driven strategies have been the single biggest factor in changing the way companies conduct their business. Increasing power of cloud computing, reducing costs and secure storage solutions, these factors have made it possible for big companies to reduce latency and streamline their processes.
-
-Third party providers of cloud solutions have further reduced the inertia by providing out of the box solutions. [Software consulting firms specializing in cloud platforms can help with the implementation](/financial-software-development-company). The banking sector is already seeing a major shift to the ‘cloud banking’ systems. It’s only a matter of time before insurance companies follow suit.
-
-According to a survey by Accenture, 83% of the participating insurance agents believe that platform driven business models will be a key aspect for growth in the next 2 years.
-
-
-
-
-## Mobile First Approach To Marketing
-One of the basic principles of marketing is to be present where the customer is. According to a study, 64.5% of the global population were mobile phone users. It only makes sense to modify strategies to reach, market and sell to the ‘mobile’ population of the world.
-
-Quite like the banks, insurance companies can do well with adapting a mobile first strategy. Mobile banking applications have opened up a whole new world by allowing users to transact with and manage their bank accounts on the go. A similar approach with custom [mobile apps for insurance ](https://codebrahma.com/mobile-application-development-company-bangalore/) companies could help them reach the digital consumer faster and help build brand loyalty. Mobile presence also helps companies interact 1:1 with their customer, providing better customer service as well as tailored products.
-
-
-## Automation To Reduce Redundancy
-Key to winning in the digital age is to replace manual, time-consuming processes with intelligent automations. Insurance agents could do better with spending more time interacting and onboarding new customers rather than sifting and scrolling through documents.
-
-Automating customer service through intelligent customized chatbots is one of the fastest growing trends this year. We have seen a lot of interest from clients, both old and new, willing to experiment by partially replacing their customer interactions with a chatbot. Another class of chatbots that help people manage their personal wealth have seen a lot of interest. Insurance companies could as well look at intelligent, automated systems that help people with their insurance applications, renewals as well as claims.
-
-Winning in the digital age would require companies to adopt a leaner, more agile approach towards processes, marketing as well as selling. Quality of products offered can also be dramatically improved and personalized by leveraging data and technology.
-
-Fintech has been one of the most talked about markets in the recent past, and for good reason. Insurance companies need to catch up with the times or risk losing market share to technology driven startups.
\ No newline at end of file
diff --git a/posts/technology-driven-disruption-insurance-industry/images/insurance-tech-data-driven-e1495216012291.jpeg b/posts/technology-driven-disruption-insurance-industry/images/insurance-tech-data-driven-e1495216012291.jpeg
deleted file mode 100644
index 9c79446..0000000
Binary files a/posts/technology-driven-disruption-insurance-industry/images/insurance-tech-data-driven-e1495216012291.jpeg and /dev/null differ
diff --git a/posts/technology-driven-disruption-insurance-industry/images/react-native-cover-e1495215538250.jpg b/posts/technology-driven-disruption-insurance-industry/images/react-native-cover-e1495215538250.jpg
deleted file mode 100644
index 4d4efef..0000000
Binary files a/posts/technology-driven-disruption-insurance-industry/images/react-native-cover-e1495215538250.jpg and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/freelancer-1024x536.png b/posts/top-10-sites-built-with-angularjs-development/images/freelancer-1024x536.png
deleted file mode 100644
index 32e0cc5..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/freelancer-1024x536.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/goodfilms-7-top-sites-built-with-angularjs-1024x501.png b/posts/top-10-sites-built-with-angularjs-development/images/goodfilms-7-top-sites-built-with-angularjs-1024x501.png
deleted file mode 100644
index fb99b1b..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/goodfilms-7-top-sites-built-with-angularjs-1024x501.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/iStock-angularjs-developers-india-1024x518.png b/posts/top-10-sites-built-with-angularjs-development/images/iStock-angularjs-developers-india-1024x518.png
deleted file mode 100644
index 9d12d80..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/iStock-angularjs-developers-india-1024x518.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/jetblue-hire-angularjs-developers-1024x511.png b/posts/top-10-sites-built-with-angularjs-development/images/jetblue-hire-angularjs-developers-1024x511.png
deleted file mode 100644
index d593b8a..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/jetblue-hire-angularjs-developers-1024x511.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/localytics-.png b/posts/top-10-sites-built-with-angularjs-development/images/localytics-.png
deleted file mode 100644
index 4fa6651..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/localytics-.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/netflix-angularjs-developers-bangalore-1024x536.png b/posts/top-10-sites-built-with-angularjs-development/images/netflix-angularjs-developers-bangalore-1024x536.png
deleted file mode 100644
index 7d93db8..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/netflix-angularjs-developers-bangalore-1024x536.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/sky-store-angularjs-1024x531.png b/posts/top-10-sites-built-with-angularjs-development/images/sky-store-angularjs-1024x531.png
deleted file mode 100644
index 74ac7a8..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/sky-store-angularjs-1024x531.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/weather.com-angularjs-1024x499.png b/posts/top-10-sites-built-with-angularjs-development/images/weather.com-angularjs-1024x499.png
deleted file mode 100644
index 3d2bc63..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/weather.com-angularjs-1024x499.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/wikiwand-angularjs-development-1024x504.png b/posts/top-10-sites-built-with-angularjs-development/images/wikiwand-angularjs-development-1024x504.png
deleted file mode 100644
index 7cc7f8d..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/wikiwand-angularjs-development-1024x504.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/images/youtube-1-top-sites-built-on-angualrjs-1-1024x476.png b/posts/top-10-sites-built-with-angularjs-development/images/youtube-1-top-sites-built-on-angualrjs-1-1024x476.png
deleted file mode 100644
index 6433263..0000000
Binary files a/posts/top-10-sites-built-with-angularjs-development/images/youtube-1-top-sites-built-on-angualrjs-1-1024x476.png and /dev/null differ
diff --git a/posts/top-10-sites-built-with-angularjs-development/top-10-sites-built-with-angularjs-development.md b/posts/top-10-sites-built-with-angularjs-development/top-10-sites-built-with-angularjs-development.md
deleted file mode 100644
index 0d3acf4..0000000
--- a/posts/top-10-sites-built-with-angularjs-development/top-10-sites-built-with-angularjs-development.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Top 10 Sites Built with AngularJS'
-date: 2016-01-20
-featuredpost: false
-description: >-
- Here is the list of top 10 sites built with AngularJS. If you are looking to hire angularjs developers then definitely you should consider Codebrahma.
-keywords:
-- angularJS developers
-- hire angularjs developers
-link: /top-10-sites-built-with-angularjs-development
-category:
-- Research and Articles
-author: Raviraj Hegde
-tags:
-- AngularJS Development
-- web application development
----
-
-JavaScript іѕ being uѕеd to power more and more parts оf mаnу wеb аррlісаtіоnѕ tоdау, hаvіng initially been used оnlу fоr superfluous client-side effects whеn іt wаѕ fіrѕt uѕеd оn websites. Thе uѕе оf frаmеwоrkѕ hаѕ mеаnt a grеаtеr соnѕіѕtеnсу and solidity іn JаvаSсrірt оn thе web and іt саn nоw bе іnvоlvеd іn bоth the client аnd server side. Angulаr stands оut for ѕеvеrаl rеаѕоnѕ; оnе оf which bеіng thе fact that Gооglе actively ѕuрроrtѕ thіѕ frаmеwоrk. Thеrе аrе nоw all mаnnеr of frаmеwоrkѕ appearing аll thе tіmе, with AngularJS sitting аmоngѕt thе mоѕt рорulаr.
-
-Angulаr аіmѕ tо mаkе HTML markup dуnаmіс аnd therefore mоrе useful to wеb dеvеlореrѕ, whіlѕt аlѕо рrоvіdіng a standard structure frоm whісh mаnу соmроnеntѕ саn be сrеаtеd quickly аnd еаѕіlу. More аnd more front-end wеb developers аrе now ѕееkіng wауѕ tо ѕеt uр іntеrfасеѕ quickly whеn JavaScript соdіng саn оthеrwіѕе bе vеrу tіmе consuming. Tор соmраnіеѕ lіkе Wаlmаrt, YоuTubе, аnd Nеtflіx are among ѕеvеrаl оthеr top companies uѕіng Angulаr оn thеіr sites.
-
-1. **YоuTubе on Ps3**
-
-![youtube-1 top sites built on angualrjs][1]
-
-
-YоuTubе іѕ a vіdео ѕhаrіng wеbѕіtе where uѕеrѕ саn view аnd роѕt videos, comment on videos, jоіn groups, еtс. Eѕѕеntіаllу, YouTube іѕ a social nеtwоrk wіth thе аbіlіtу tо vіеw аnd роѕt vіdеоѕ. It is interesting to note that YоuTubе оn Plау Stаtіоn 3 is buіlt wіth AngulаrJS. Hоwеvеr, іt іѕ nоt tоо ѕurрrіѕіng as YouTube іѕ оwnеd bу Gооglе.
-
-2. **Netflix**
-
-![netflix - angularjs developers bangalore][2]
-
-
-Netflix is the world's largest рrоvіdеr оf entertainment on demand with mоrе than 11 mіllіоn subscribers enjoying instant ассеѕѕ tо unlіmіtеd TV еріѕоdеѕ and mоvіе rentals. Started іn 1997, Netflix has grown fаѕt. Nеtflіx subscribers саn wаtсh all-time fаvоrіtе movies rіght in thеіr lіvіng room bу ѕtrеаmіng mоvіеѕ оvеr the Intеrnеt.
-
-3. **iStockphoto**
-
-![iStock - angularjs developers india][3]
-
-
-iStock is an extremely common stock photography site with both customers and photographers. iStock is definitely an alternatives that will match many; they аrе the ріоnееrѕ of online digital іmаgеѕ, setting uр their company bасk іn 2002 when аll photo іmаgеѕ wеrе frее. It іѕ соnѕіdеrеd tо bе the top earning ѕtосk аgеnсіеѕ fоr all рhоtоgrарhеrѕ.
-
-4. **jetblue.com**
-
-![jetblue - hire angularjs developers][4]
-
-
-Jеt Bluе Aіrwауѕ Corporation is a business organization that offers a passengers аіr trаnѕроrtаtіоn services tо the public іn the United Stаtеѕ. Thе mаіn оffісе оf the company іѕ lосаtеd at Queens Boulevard Forest Hills, New York Cіtу. Thе company was founded іn the уеаr 1998.
-
-5. **Wikiwand.com**
-
-![wikiwand - angularjs development][5]
-
-
-Wikiwand interface was dеvеlореd tо іmрrоvе rеаdеr'ѕ еxреrіеnсе. It enables the орtіmіzаtіоn оf Wіkіреdіа'ѕ wonderful content . Wikiwand аddѕ an еаѕу tо uѕе tаblе оf contents tо the ѕіdе оf the ѕсrееn.
-
-> If you are looking to [hire angularjs developers][6], then do check out Codebrahma
-
-1. **Localytics**
-
-![localytics -][7]
-
-
-Lосаlуtісѕ іѕ a lіfесусlе engagement platforms fоr web аnd mоbіlе аррѕ. The integrated аррrоасh to app marketing and аnаlуtісѕ hеlрѕ customers automate and орtіmіzе еvеrу stage of the app lіfесусlе tо keep their uѕеrѕ engaged and tо dеlіvеr mоrе реrѕоnаlіzеd еxреrіеnсеѕ.
-
-2. **Goodfilms**
-
-![goodfilms - 7 top sites built with angularjs][8]
-
-
-This іѕ a сlеаn ѕосіаl mоvіе platform that hеlрѕ to mаkе movie reviews еаѕу tо share. It аlѕо makes іt easy to kеер a list of mоvіеѕ tо wаtсh.
-
-3. **Sky store**
-
-![sky store - angularjs][9]
-
-
-On ѕkу ѕtоrе, уоu саn rent the mоѕt popular mоvіеѕ online. Mоvіеѕ оn ѕkу store саn bе streamed bу аnуоnе through a browser.
-
-4. **Weather.com**
-
-![weather.com - angularjs][10]
-
-
-This is one оf the most advanced sites when іt соmеѕ tо weather fоrесаѕt. It provides efficient weather forecast and uрdаtеѕ from аll over the world.
-
-5. **Freelancer.com**
-
-![freelancer][11]
-
-
-Frееlаnсеr wаѕ сrеаtеd in 2009 аѕ a global crowdsourcing marketplace. Thіѕ аllоwѕ potential employers tо post jobs that frееlаnсеrѕ can then bid tо соmрlеtе.
-
-
-[1]: ./images/youtube-1-top-sites-built-on-angualrjs-1-1024x476.png
-[2]: ./images/netflix-angularjs-developers-bangalore-1024x536.png
-[3]: ./images/iStock-angularjs-developers-india-1024x518.png
-[4]: ./images/jetblue-hire-angularjs-developers-1024x511.png
-[5]: ./images/wikiwand-angularjs-development-1024x504.png
-[6]: /angularjs-development-company/
-[7]: ./images/localytics-.png
-[8]: ./images/goodfilms-7-top-sites-built-with-angularjs-1024x501.png
-[9]: ./images/sky-store-angularjs-1024x531.png
-[10]: ./images/weather.com-angularjs-1024x499.png
-[11]: ./images/freelancer-1024x536.png
-
-
\ No newline at end of file
diff --git a/posts/top-10-sites-powered-by-node-js/images/ancestry-1024x495.png b/posts/top-10-sites-powered-by-node-js/images/ancestry-1024x495.png
deleted file mode 100644
index cbaa7eb..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/ancestry-1024x495.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/images/bandpage-1024x526.png b/posts/top-10-sites-powered-by-node-js/images/bandpage-1024x526.png
deleted file mode 100644
index f14cd1d..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/bandpage-1024x526.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/images/groupon-1-1024x443.png b/posts/top-10-sites-powered-by-node-js/images/groupon-1-1024x443.png
deleted file mode 100644
index e135ca0..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/groupon-1-1024x443.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/images/opencare-1024x496.png b/posts/top-10-sites-powered-by-node-js/images/opencare-1024x496.png
deleted file mode 100644
index 278e6ad..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/opencare-1024x496.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/images/paypal-sites-built-on-Node-js-1024x396.png b/posts/top-10-sites-powered-by-node-js/images/paypal-sites-built-on-Node-js-1024x396.png
deleted file mode 100644
index c8b7c60..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/paypal-sites-built-on-Node-js-1024x396.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/images/quizlet-1024x492.png b/posts/top-10-sites-powered-by-node-js/images/quizlet-1024x492.png
deleted file mode 100644
index 153c963..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/quizlet-1024x492.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/images/shutterstocl-1024x416.png b/posts/top-10-sites-powered-by-node-js/images/shutterstocl-1024x416.png
deleted file mode 100644
index 63c2158..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/shutterstocl-1024x416.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/images/wallstreet-1024x480.png b/posts/top-10-sites-powered-by-node-js/images/wallstreet-1024x480.png
deleted file mode 100644
index da42b27..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/wallstreet-1024x480.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/images/zendesk-1024x447.png b/posts/top-10-sites-powered-by-node-js/images/zendesk-1024x447.png
deleted file mode 100644
index 4778c0c..0000000
Binary files a/posts/top-10-sites-powered-by-node-js/images/zendesk-1024x447.png and /dev/null differ
diff --git a/posts/top-10-sites-powered-by-node-js/top-10-sites-powered-by-node-js.md b/posts/top-10-sites-powered-by-node-js/top-10-sites-powered-by-node-js.md
deleted file mode 100644
index e491614..0000000
--- a/posts/top-10-sites-powered-by-node-js/top-10-sites-powered-by-node-js.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Top 10 Sites Powered by Node.JS'
-date: 2015-12-25
-featuredpost: false
-description: >-
- Here is the list of top 10 websites powered by Node.JS. If you are confused in choosing the right technology do consult Codebrahma, NodeJS Development Company.
-keywords:
-- Nodejs development company
-link: /top-10-sites-powered-by-node-js
-category:
-- Research and Articles
-author: Raviraj Hegde
-tags:
-- Node.js Development
-- Nodejs Projects
----
-
-Node.js is a powerful runtime environment written in JavaScript that can be used to run server-side applications. It is extremely flexible, has a wide user base and for people with knowledge of JavaScript, virtually no learning curve at all. Node.js is completely open source and is maintained by the developer community at large, backed by Joyent, a cloud services company.
-
-Node.js is fast and scalable, which is why even though it is a relative newcomer, it has already found plenty of takers and is being widely used in the industry now. Here are some of the famous websites that are powered by Node.js.
-
-1. **PayPal**
-
-PayPal is one of the earliest "internet" corporations, used to remit and receive payments over the internet without revealing your sensitive financial details. PayPal has long been part and parcel of the internet culture and it is definitely a mark of respect and trust in Node.js that Paypal uses it.
-
-![paypal - sites built on Node js][1]
-
-2. **Groupon**
-
-The number one destination worldwide for finding discount coupons and other great deals on e-commerce platforms, Groupon is a high profile user of the Node.js platform.
-
-![groupon][2]
-
-3. **Wall Street Journal**
-
-The Wall Street Journal is a respected daily newspaper from the United States that focuses mostly on business and financial news. Its online version is powered by a Node.js backend.
-
-![wallstreet][3]
-
-4. **Secret**
-
-Secret is the newest online "confessional" platform that is used to share personal secrets with other users anonymously. The company is expected to grow rapidly and has already secured US$35 Million in funding.
-
-5. **Bandpage**
-
-It is a web application that allows musicians to efficiently manage their social media profiles across multiple platforms from a single centralised interface. It uses Node.js and is presently worth US$27.6 Million.
-
-![bandpage][4]
-
-6. **Opencare**
-
-It is an online service that matches patients to the best healthcare service provider nearby that fit their requirements. It is bringing about a revolution in the healthcare services market in many countries over the world.
-
-![opencare][5]
-
-7. **Shutterstock**
-
-It is a well-known platform for photographers to sell their photography and also for prospective users to buy and license stock photography. The venture has a present market value of US$2 Billion.
-
-![shutterstocl][6]
-
-8. **Ancestry**
-
-Ancestry is a site that uses government and crowdsourced data to help individuals build and track their family and lineage through generations.
-
-![ancestry][7]
-
-9. **Zendesk**
-
-Zendesk provides ticketing, tracking and customer service solutions for software development platforms. It is an essential tool for providing efficient web services and is valued at US$1.8 Billion.
-
-![zendesk][8]
-
-10. **Quizlet**
-
-Initially founded by a student named Andrew Sutherland to help study for high school French, Quizlet is now one of the largest online education platforms in the world.
-
-![quizlet][9]
-
-Some of the most popular websites on the internet handling extreme traffic on a day to day basis use Node.js. It is a testament to the robust and effective nature of the platform and can be trusted to handle demanding workloads efficiently. Node.js might be new but is already a trusted and proven system to base web applications on.
-
-[1]: ./images/paypal-sites-built-on-Node-js-1024x396.png
-[2]: ./images/groupon-1-1024x443.png
-[3]: ./images/wallstreet-1024x480.png
-[4]: ./images/bandpage-1024x526.png
-[5]: ./images/opencare-1024x496.png
-[6]: ./images/shutterstocl-1024x416.png
-[7]: ./images/ancestry-1024x495.png
-[8]: ./images/zendesk-1024x447.png
-[9]: ./images/quizlet-1024x492.png
-
-
-
diff --git a/posts/top-4-javascript-frameworks-for-2017/2017-02-21-Top-4-Javascript-Frameworks-For-2017.md b/posts/top-4-javascript-frameworks-for-2017/2017-02-21-Top-4-Javascript-Frameworks-For-2017.md
deleted file mode 100644
index 270a80b..0000000
--- a/posts/top-4-javascript-frameworks-for-2017/2017-02-21-Top-4-Javascript-Frameworks-For-2017.md
+++ /dev/null
@@ -1,78 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Top 4 Javascript Frameworks For 2017'
-date: 2017-03-14
-featuredpost: false
-description: >-
- Javascript frameworks have played a big role in the rise of web and mobile applications. We list the top 4 javascript frameworks to lookout for in this year
-keywords:
-- angularjs
-- reactjs
-- backbonejs
-- meteorjs
-- jquery
-- javascript frameworks
-link: /top-4-javascript-frameworks-for-2017
-category:
-- Research and Articles
-author: Anand Narayan
-tags:
-- Angular.js
-- backbone.js
-- backboneJS
-- javascript
-- meteor.js
-- ReactJS
----
-Javascript has played a big role in the rise of the web and mobile applications. Since it’s humble beginnings with the Netscape Navigator in 1995, Javascript has evolved into such a powerful force that nearly 95% of all the web uses it for client side programming. With a whole lot of frameworks now in existence, it seems like almost every other week there is a new JS library people are gushing about.
-
-Javascript frameworks empower developers to quickly develop single page applications and web application prototypes without worrying much about the code structure. Being able to launch full fledged applications within a matter of weeks has given JS frameworks, the spotlight it truly deserves.
-
-In this article we take a look at four frameworks that are bound to create a ripple in the developer community this year:
-
-
-
-## 1. ReactJS
-Developed and maintained by the engineers at Facebook along with a community of individual contributors, React is one of the most talked about Javascript libraries of the last year. It’s an open source library for building user interfaces. The popularity of React can only be substantiated by the 1000 contributors (Github) and the host of websites using it, including Netflix, Airbnb, Walmart and Imgur to name a few.
-
-ReactJS is not a MVC framework, it’s just a Javascript library that renders the view. It therefore can be termed as the ‘V’ of the MVC, integrating seamlessly with other frameworks for the ‘M’ and ‘C’ part of the architecture. Another great feature of React is the use of Virtual DOM, which makes manipulation of the DOM much faster. React’s reputation for performance comes from this little innovation.
-
-It does have a slightly steeper learning curve, but makes development really straightforward. It’s a perfect solution for high performance, web application requirements.
-
-[Hire Top ReactJS Developers](/react-js-development/)
-
-
-
-
-## 2. AngularJS
-A popular enterprise Javascript framework maintained mainly by Google, it was created to address the challenges faced during development of single page applications. It’s a hugely popular framework, the sixth most starred project of all time on Github. A wide variety of web apps and websites are built using AngularJS, including PayPal, Udemy, Weather.com and the Guardian, along with a bunch of Google sites.
-
-Angular is a MVC type framework with two way data binding being its most notable feature. Two way data binding relieves the backend of any templating responsibilities. Whenever there is a data change, updation happens on both model and view side enabling you to build highly reusable view components.
-
-AngularJS is immensely popular, with over 10,000 sites currently using it (according to Libscore). It is one of the best frameworks to use for building complex web applications as well as single page applications.
-
-[Hire Top AngularJS Developers](hire-angularjs-development-company/)
-
-
-
-
-## 3. MeteorJS
-MeteorJS is an open-source Javascript framework built using Node.js, specifically for rapid prototyping. The framework was developed by the Meteor Development Group, a startup backed by YCombinator and funded by Andreessen Horowitz.
-
-It’s a complete framework that uses Javascript on both client side and server side, with tons of features for backend development, frontend development, business logic and database management. Being a full stack framework, Meteor has a bunch of advantages to offer. For one, it comes bundled with several built-in features, such as reactive templates, automatic CSS and JS minification on the production server. Hot code reload means that any change in the database is reflected on the UI without any time loss. Meteor also comes with its own custom package manager called atmosphere.js which has over 2,600 smart packages.
-
-Since its launch in 2012, Meteor has drastically grown in popularity and is currently being used by some big names like Honeywell, IKEA and Qualcomm.
-
-
-
-
-## 4. BackboneJS
-Backbone is a single file JavaScript framework developed by Jeremy Ashkenas of the CoffeeScript and Underscore.js fame. Being a lightweight framework, it’s quite popular with developers looking to give some structure to their JavaScript applications quickly.
-It is especially popular for developing single page applications.
-
-Backbone is based on the MVP (model – view – presenter) design paradigm which itself is a derivative of the MVC architecture. It provides models with key-value binding and custom events for handling data changes, Views have declarative handling, while the Router handles URL and state management. All in all, a pretty solid framework for building single page applications quickly and easily.
-
-With over 26,000 stars on the Github repo, Backbone is being used by some really big names like Airbnb, Pinterest, Trello and Reddit.
-
-
-There are a ton of Javascript frameworks, and choosing these 4 are purely a personal / professional preference. If you have a personal favourite that we haven’t listed above, do let us know in the comments section below!
diff --git a/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Angular-1024x342.png b/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Angular-1024x342.png
deleted file mode 100644
index d88754a..0000000
Binary files a/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Angular-1024x342.png and /dev/null differ
diff --git a/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Backbone-1024x342.png b/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Backbone-1024x342.png
deleted file mode 100644
index 1fed006..0000000
Binary files a/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Backbone-1024x342.png and /dev/null differ
diff --git a/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Meteor-1024x342.png b/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Meteor-1024x342.png
deleted file mode 100644
index 38a4322..0000000
Binary files a/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-Meteor-1024x342.png and /dev/null differ
diff --git a/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-React-1024x342.png b/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-React-1024x342.png
deleted file mode 100644
index d5834a0..0000000
Binary files a/posts/top-4-javascript-frameworks-for-2017/images/TopJSFrameworks-React-1024x342.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/2.-Shopify-sites-built-with-Ruby-on-Rails-1024x656.png b/posts/top-sites-built-with-ruby-on-rails/images/2.-Shopify-sites-built-with-Ruby-on-Rails-1024x656.png
deleted file mode 100644
index 2a8fd83..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/2.-Shopify-sites-built-with-Ruby-on-Rails-1024x656.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/3.basecamp-ruby-on-rails-sites-1024x719.png b/posts/top-sites-built-with-ruby-on-rails/images/3.basecamp-ruby-on-rails-sites-1024x719.png
deleted file mode 100644
index 7cad1a1..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/3.basecamp-ruby-on-rails-sites-1024x719.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/airbnb-1024x581.png b/posts/top-sites-built-with-ruby-on-rails/images/airbnb-1024x581.png
deleted file mode 100644
index 9c792df..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/airbnb-1024x581.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/github-1024x645.png b/posts/top-sites-built-with-ruby-on-rails/images/github-1024x645.png
deleted file mode 100644
index 091981f..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/github-1024x645.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/groupon-1024x569.png b/posts/top-sites-built-with-ruby-on-rails/images/groupon-1024x569.png
deleted file mode 100644
index 580b40f..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/groupon-1024x569.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/hulu-1024x446.png b/posts/top-sites-built-with-ruby-on-rails/images/hulu-1024x446.png
deleted file mode 100644
index 338b6eb..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/hulu-1024x446.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/slideshare-1024x660.png b/posts/top-sites-built-with-ruby-on-rails/images/slideshare-1024x660.png
deleted file mode 100644
index c90bf77..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/slideshare-1024x660.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/twitter-1024x591.png b/posts/top-sites-built-with-ruby-on-rails/images/twitter-1024x591.png
deleted file mode 100644
index b8a0000..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/twitter-1024x591.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/urban-dictonary-1024x572.png b/posts/top-sites-built-with-ruby-on-rails/images/urban-dictonary-1024x572.png
deleted file mode 100644
index 4a1bf8b..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/urban-dictonary-1024x572.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/images/yellowpages-1024x519.png b/posts/top-sites-built-with-ruby-on-rails/images/yellowpages-1024x519.png
deleted file mode 100644
index 08f15f5..0000000
Binary files a/posts/top-sites-built-with-ruby-on-rails/images/yellowpages-1024x519.png and /dev/null differ
diff --git a/posts/top-sites-built-with-ruby-on-rails/top-sites-built-with-ruby-on-rails.md b/posts/top-sites-built-with-ruby-on-rails/top-sites-built-with-ruby-on-rails.md
deleted file mode 100644
index 57be46d..0000000
--- a/posts/top-sites-built-with-ruby-on-rails/top-sites-built-with-ruby-on-rails.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Top Sites built with Ruby on Rails'
-date: 2015-12-24
-featuredpost: false
-description: >-
- Here is the list of 10 awesome sites built with Ruby on Rails. Ruby on Rails is robust and good for Rapid development.
-keywords:
-- Ruby on rails development
-- Ruby on Rails development company
-- Rails Development consulting
-- sites built on Rails
-- Ruby on Rails Examples
-link: /top-sites-built-with-ruby-on-rails
-category:
-- Research and Articles
-author: Raviraj Hegde
-tags:
-- Ruby on rails
-- Ruby on rails development
----
-
-Ruby in Rails has graduated from being a simple framework to a powerful tool in its own right. Its popularity has soared in recent years and for good reason; it offers stable performance and takes very little time to develop powerful applications making use of gems.
-
-Nowadays there is great demand for Ruby on Rails developers. Various platforms have sprung up and the need for talented developers has never been higher. Whether you are a developer thinking about whether you should invest time and resources to learn Ruby on Rails or if you are starting out on a web venture and thinking about which platform and tools to use, here are ten of some of the very best sites built using Ruby on Rails.
-
-1. **Twitter (originally)**
-Although it has now shifted to a Java base due to issues with scalability, Twitter was originally founded on Ruby on Rails when it launched back in 2006.
-![twitter][1]
-
-2. **Shopify**
-This fast growing e-commerce platform that helps online sellers manage their own e-commerce ventures and offers many top-shelf features like order tracking and using credit cards is built using Ruby on Rails.![2. Shopify - sites built with Ruby on Rails][2]
-
-
-3. **Basecamp**
-One of the most popular names in web design and application development, the company's debut commercial application was built using Ruby on Rails.![3.basecamp - ruby on rails sites][3]
-
-
-4. **Yellow Pages**
-The online information repository that lists business and telephone numbers knows as the Internet Yellow Pages uses Ruby on Rails. It is one of the biggest websites on the internet.
-![yellowpages][4]
-
-
-5. **Hulu**
-Hulu is a popular platform for streaming television shows online. It is ad supported but otherwise free to use. However, it also offers paid subscriptions for added benefits.
-![hulu][5]
-
-
-6. **Slideshare**
-Slideshare is a popular collaboration tools for business professionals designed especially to upload and share presentations online and manage discussions and feedback. Within its first year of existence, the site notched up a record of 3 million unique visitors.
-![slideshare][6]
-
-
-7. **GitHub**
-The most popular online development platform for hosting source code for developers, GitHub is built on Ruby on Rails.
-![github][7]
-
-
-8. **Groupon**
-The best place on the internet to look for deals and discount coupons, Groupon has its presence all over the globe. Launched in 2008, it is one of the most popular websites on the internet and is built using Ruby on Rails.
-![groupon][8]
-
-
-9. **Urban Dictionary**
-Founded in 1999 as a crowdsourced dictionary of online slang to help newcomers acclimatize to the "internet culture", Urban Dictionary is powered by Ruby on Rails.
-![urban dictonary][9]
-
-
-10. **AirBnb**
-AirBnb is the latest platform to disrupt established business by allowing travellers and visitors to find accommodations in "homes" and for homeowners to rent out spare rooms to individuals. It uses Ruby on Rails.
-![airbnb][10]
-
-[1]: ./images/twitter-1024x591.png
-[2]: ./images/2.-Shopify-sites-built-with-Ruby-on-Rails-1024x656.png
-[3]: ./images/3.basecamp-ruby-on-rails-sites-1024x719.png
-[4]: ./images/yellowpages-1024x519.png
-[5]: ./images/hulu-1024x446.png
-[6]: ./images/slideshare-1024x660.png
-[7]: ./images/github-1024x645.png
-[8]: ./images/groupon-1024x569.png
-[9]: ./images/urban-dictonary-1024x572.png
-[10]: ./images/airbnb-1024x581.png
-
-
\ No newline at end of file
diff --git a/posts/using-higher-order-components-react-application/2017-06-13-Using-Higher-Order-Components-in-a-React-Application.md b/posts/using-higher-order-components-react-application/2017-06-13-Using-Higher-Order-Components-in-a-React-Application.md
deleted file mode 100644
index 412b0c5..0000000
--- a/posts/using-higher-order-components-react-application/2017-06-13-Using-Higher-Order-Components-in-a-React-Application.md
+++ /dev/null
@@ -1,203 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Using Higher Order Components in a React Application'
-date: 2017-06-13
-featuredpost: false
-description: >-
- If you have started using ReactJS recently often you might have felt that you are performing repeated logic in many components. For example consider an app having- Infinite scroll in three different views with all having different data. You want
-keywords:
-- reactjs
-- higher order components
-- react js development
-link: /using-higher-order-components-react-application
-category:
-- Development
-tags:
-- higher order components in reactjs
-author: Prasanna
----
-
-If you have started using [ReactJS](/react-js-development/) recently often you might have felt that you are performing repeated logic in many components. For example consider an app having:
-
-- Infinite scroll in three different views with all - having different data.
-You want to fetch new set of data when you scroll to the current limit.
-
-If you ever thought “Is there a way by which I can simplify this such that I don’t need to rewrite the fetching logic again and again in all three views?”. Well Higher Order Component (HOC) provides solution to such a kind of problems.
-
-HOC is a powerful tool based on which many libraries are getting developed. The objective of this article is to explain about how HOCs can help in simplifying and abstracting repeated logic in a React Applications.
-
-Javascript in general can be treated as functional programming or object orient programming. HOCs are functional implementation of javascript. It has its similarities with the concept of Higher Order functions.
-
-Functions that operate on other functions, either by taking them as arguments or by returning them, are called higher-order functions.
-
-For example
-```js
-function greaterThan(a) { // Higher order function
- return function(b) {
- return b > a;
- }
-}
- ```
-greaterThan(10)(11) will be true.
-
-Also we can do
-```js
-var greaterThan10 = greaterThan(10);
-```
-And anywhere we can use greaterThan10(11) [ Which will be true ]. This helps in abstraction the inner details thereby giving us ability to think about higher level.
-
-Higher Order components are based on this. Given a function (Functional component) which takes a component and gives back another component.
-
-> Function(component) => (component)
-
-__1. How it benefits in abstracting repeated logic?__
-
-A function (Functional component in React) which takes a component and gives back another component. We do this because we can do something inside the function which can add more power to the resulting component.
-
-We can treat this as inheritance in React. How? We can treat the input functional component as a Parent and the resultant as the inherited components. So the exact benefits are:
-
-1. Add / Update New props.
-2. Filter out props.
-3. Reuse Logic by maintaining an internal State.
-4. Change the Rendering of component based on any logic.
-
-__2. How To write a Higher order component.__
-
-Functional components started from React V15. It can be created like
-```jsx
-import React from 'react';
-
-export const WrapperComponent(WrappedComponent) => { // Wrapped Component is the parent component
- return class HigherOrderComponent extends React.Component { // Returns a new component
- // Bring any reusable logic here.
- // For example Add a new prop to the existing props
- // or filter props based on the need
- render() {
- return (
- < WrappedComponent {...props} /> // Renders a new prop based on any operation
- );
- }
- }
-}
-
-// If we want to use this then we can do something like
-// This enables reusable functionality
-
-const FirstHOC = WrapperComponent(FirstComponent);
-const SecondHOC = WrappedComponent(SecondComponent);
-```
-__3. Usage__
-
-Lets try to create a Higher order component for a particular use case. Lets consider we have an app which has many tables. Each table can have any number of these three functionality ( can have multiple)
-
-1. Pagination – On clicking each page number, fetches new data correspondingly.
-2. Sorting based on each column title in ascending or descending order.
-3. Changing Number of rows per page (Limit).
-The view would look something similar to this
-
-
-
-The best way to structure is to have three separate logic for pagination, sorting and changing numbers per page. And whenever the parent component needs to conditionally render any of these then it can be done based on props.
-
-```jsx
-import React from 'react';
-
-export const TableWrapper(WrappedComponent) => {
- return class TableComponent extends React.Component {
-
- constructor(props) {
- super(props);
-
- this.state = {
- tableData: null; // Make some default fetching by which we can obtain this.
- };
- // Bind all the functions here
- }
-
- fetchMoreData(limit, offset, sortBasedOn) {
- // Fetches new Data and stores it in a state
- const tableData = fetch(endpoint, params) // Send params with limit, offset and sortBasedOn
- this.setState({
- tableData,
- })
- }
-
- onChangeLimit(changedLimit) {
- // when the limit changes fetch new data
- fetchMoreData(changedLimit, offset, sortBasedOn)
- }
-
- onChangeOffset(changedOffset) {
- // When the offset changes fetch new data
- fetchMoreData(limit, changedOffset, sortBasedOn);
- }
-
- onChangeSortPriority(currentSortBasedOn) {
- // When the sort priority changes fetch new data
- fetchMoreData(limit, changedOffset, currentSortBasedOn)
- }
-
- render() {
- return (
- (
- props.sortingRequired ?
- < Sorting
- {...sortingRelatedProps}
- onChangeSortPriority={this.onChangeSortPriority} // Callback for change in sort priority
- /> : null
- )
- (
- < WrappedComponent
- {...props}
- {...this.state.tableData} // Render Table Data.
- />
- )
- (
- props.changeNumberOfRowsRequired ?
- < ChangeNumberOfRowsPerPage
- {...numberOfRowsPerPageRelatedProps}
- onChangeLimit={this.onChangeLimit} // Callback for change in limit
- /> : null
- )
- (
- props.paginationRequired ?
- < Pagination
- {...paginationRelatedProps}
- onChangeOffset={this.onChangeOffset} // Callback for change in offset
- /> : null
- )
- );
- }
- }
-}
-```
-
-For this to make work all you need is a presentational component which renders Table cells based on some data. Lets say``` < Table />``` is such a component then,
-```jsx
-// A Table without any feature
-const WrappedTable = TableWrapper(< Table />);
-
-// Table with pagination
-const WrappedTable = TableWrapper(< Table paginationRequired={true}/>);
-
-// Table with all features
-const WrappedTable = TableWrapper(
-< Table
- paginationRequired={true}
- changeNumberOfRowsRequired={true}
- sortingRequired={true}
-/>);
-```
-Also we can see data fetching and ```this.state.tableData``` is completely abstracted inside of the HOC.
-
-This structure can help us to write HigherOrder component at multiple level one over the other. For example the same can be achieved by writing three higher order components if we carefully interlink the abstraction. If we do that then we can have something like
-
-```jsx
-const WrappedTable = PaginationWrapper(SortingWrapper(ChangeLimitWrapper(< Table />)));
-```
-But there are certain disadvantages in this method. This will create three React classes as supposed to one in the previous method. Also HOCs in common might have performance issues if there are too many props linking each functionality. One must use ShouldComponentUpdate lifecycle in order to avoid that.
-
-
-But apart from that if we are careful enough we can have an architecture which can abstract logic that can be shared across other presentational components using HOC has great benefits.
-
-Proceed to next part of this blog for a more [functional approach to Higher Order Components](/functional-approach-higher-order-components-recompose/)
\ No newline at end of file
diff --git a/posts/using-higher-order-components-react-application/images/pasted-image-0.png b/posts/using-higher-order-components-react-application/images/pasted-image-0.png
deleted file mode 100644
index f7c3765..0000000
Binary files a/posts/using-higher-order-components-react-application/images/pasted-image-0.png and /dev/null differ
diff --git a/posts/validate-your-startup-idea/2017-03-14-How-To-Validate-Your-Startup-Idea.md b/posts/validate-your-startup-idea/2017-03-14-How-To-Validate-Your-Startup-Idea.md
deleted file mode 100644
index afa82c6..0000000
--- a/posts/validate-your-startup-idea/2017-03-14-How-To-Validate-Your-Startup-Idea.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'How To Validate Your Startup Idea'
-date: 2017-03-14
-featuredpost: false
-description: >-
- Making a product that people want is the holy grail of the startup world. But how do you validate your idea before actually building it? Here are 3 ways.
-author: Anand Narayan
-link: /validate-your-startup-idea
-category:
-- Business
-tags:
-- idea validation
-- product development
-- startup ideas
----
-> ## “Make something people want.”
-> – Paul Graham
-
-Making a product that people want is the holy grail of the startup world. A lot of ideas that sound amazing in your head, may or may not actually be something that people actually want. So how do you ‘know’ even before you build, whether that idea will resonate with your target audience. A popular methodology called Lean Startup, championed the idea of building a Minimum Viable Product to test the waters. A Minimum Viable Product or MVP for short is, “that product which has just those features (and no more) that allows you to ship a product that resonates with early adopters; some of whom will pay you money or give you feedback.”
-
-In other words, the lean startup methodology says that it is better to test waters with building a basic product that has just enough features to verify with you audience that your product is actually solving a problem. The problem is figuring out what constitutes for a Minimum Viable Product. And the second problem is, if you don’t have a technology background, how do you go about building the MVP.
-
-Here we give you three alternates to actually building an MVP, that’ll just as well help you validate your startup idea.
-
-## 1. Landing Pages
-Landing pages can ideally be a great way to validate your idea. The caveat is, that you need to ensure that the people going through the landing page think of it as a real ‘purchase’. Putting together a landing page that outright tells people that your product is under development will not do much to validate.
-
-Joel Gascoigne used a similar technique to validate his idea. He wanted to build a tool that makes Twitter scheduling a breeze. His idea had weight, as the tool is now the social media giant Buffer.
-
-
-Joel created this three page MVP after he got some positive feedback on his initial, two page MVP (that didn’t include the actual pricing). Including an actual pricing page made things more real. People who were only really looking to try or buy this product would go through the whole cycle and fill in their email id.
-
-If you’re creating a landing page MVP, be sure to ‘ask’ for money. Show your items as ‘Sold Out’ or ‘Under Preparation’ and build a list of users who are willing to pay. If you can collect enough IDs and deliver within a short period of time, you’re in business.
-
-## 2. Crowdsourcing Your Fund
-Crowdsourcing allows you to effectively communicate your idea and see if people are really interested in what you’re building. Sites like Kickstarter are a great way to make your product available for pre-purchase orders and raise money to build them. It’s great way to validate your idea, where people actually pay and show their support.
-
-Jason Fried, founder of Basecamp explains – “You can’t ask people who haven’t paid how much they’re willing to pay. Their answers don’t matter because there’s no cost to saying ‘yes’ ‘$20’ ‘no’ ‘$100’. They all cost the same—nothing. The only answers that matter are dollars spent. People answer when they pay for something. That’s the only answer that really matters.”
-
-The issue with going the crowdsourcing way is that you’re stuck with your initial pitch for a longer period of time. Once people start pitching in for your idea, you can’t really change what you’re looking to build. This sometime works against the principles of rapid prototyping and quick pivots that software demands, but works great for longer term projects such as those for hardware.
-
-Smart watch company Pebble, is one of the most successful crowdfunding stories till date. Three of the four biggest amounts raised on Kickstarted are for their products.
-
-
-
-
-The pebble project creating waves on Kickstarter
-
-
-## 3. Build A Manual MVP
-Paul Graham, in one his popular essays, mentions – “Some startups could be entirely manual at first. If you can find someone with a problem that needs solving and you can solve it manually, go ahead and do that for as long as you can, and then gradually automate the bottlenecks.”
-
-Incidentally, ZeroCater – a YC startup, that provides catering options to companies started off as a simple spreadsheet that the founder Arram Sabeti maintained. AngelList started off as the founders manually collecting list of startups and matching them with potential investors. Even Netflix started off as a company that rented and sold DVDs over the internet. Examples of the ‘Manual’ MVP approach are endless and can be a great way to validate your idea!
-
-
-
-
-We hope this gives you ideas to implement for your own startups. While validating your startup idea is a big part of your journey, determination will be the single most important factor in determining your success!
-
-P.S. If you’re looking to [outsource your product development](/outsourced-software-product-development/), drop us a line!
diff --git a/posts/validate-your-startup-idea/images/Buffer-MVP-2.png b/posts/validate-your-startup-idea/images/Buffer-MVP-2.png
deleted file mode 100644
index 431cadf..0000000
Binary files a/posts/validate-your-startup-idea/images/Buffer-MVP-2.png and /dev/null differ
diff --git a/posts/validate-your-startup-idea/images/Pebble-kickstarter.png b/posts/validate-your-startup-idea/images/Pebble-kickstarter.png
deleted file mode 100644
index ccfd386..0000000
Binary files a/posts/validate-your-startup-idea/images/Pebble-kickstarter.png and /dev/null differ
diff --git "a/posts/whats-new-jquery-3-0/2016-07-13-What\342\200\231s-new-inside-jQuery-3-0.md" "b/posts/whats-new-jquery-3-0/2016-07-13-What\342\200\231s-new-inside-jQuery-3-0.md"
deleted file mode 100644
index d9e1982..0000000
--- "a/posts/whats-new-jquery-3-0/2016-07-13-What\342\200\231s-new-inside-jQuery-3-0.md"
+++ /dev/null
@@ -1,148 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'What’s new inside jQuery 3.0'
-date: 2016-07-13
-featuredpost: false
-description: >-
- jQuery got a major update last month with the release of jQuery 3.0 and jQuery Compat 3.0. This release promises a slimmer and faster jQuery, with backward compatibility.
-keywords:
-- jQuery 3.0
-- jQuery 3.0 features
-- jquery 3.0 new features
-- jquery 3.0 download
-author: Balram Khichar
-category:
-- Development
-link: /whats-new-jquery-3-0
-tags:
-- jQuery 3.0
----
-
-It's been 10 years since [jQuery](http://jquery.com/) started ruling the web and it has stuck around for good reasons. After a long time jQuery got a major update last month with the release of jQuery 3.0 and jQuery Compat 3.0. This release promises a slimmer and faster jQuery, with backwards compatibility in mind. You can download the latest jQuery 3.0 from the [download page](http://jquery.com/download/). It's also worth having a look at the [upgrade guide](http://jquery.com/upgrade-guide/3.0/) and the [source code](https://code.jquery.com/jquery-3.0.0.js).
-
-In this article, I'm going to highlight the new important changes introduced inside jQuery 3.0 and how you can use it.
-
-
-
-#### 1\. jQuery 3.0 runs in Strict Mode
-
-Today almost all browsers supported by jQuery 3 support [strict mode][5], this release have been built with this directive in mind.
-
-
-
-Got your code running in non strict mode? No worries, You don't need to rewrite your existing jQuery code. Although jQuery 3 has been written in strict mode, it's not compulsory to run your code in strict mode. Strict & non-strict mode JavaScript can happily coexist.
-
-
-#### 2\. For…of Loop
-
-jQuery 3.0 supports the `for…of` statement, a new kind of `for` loop. This new iterator is part of the [ECMAScript 6](http://es6-features.org/). It gives a more straightforward way to loop over iterable objects, such as Arrays, Maps, and Sets. In jQuery 3.0, the `for...of` loop can replace the former `$.each(...)` syntax.
-
-```js
-var items = $('.random-class');
-
-// old jQuery way
-$.each(items, function(index, value) {
- // do something
-});
-
-// ES6 way
-for(let item of items) {
- // do something
-};
-```
-
-_Note: The `for...of` loop will only work with browsers that supports ECMAScript 6 or if you use a JavaScript compiler such as [Babel](https://babeljs.io/)._
-
-
-
-#### 3\. requestAnimationFrame( ) for Animations
-
-jQuery 3.0 uses the `requestAnimationFrame()` API for animations. It makes animations run smoother, faster and less CPU-intensive animations. This new API is only used in browsers that [support](http://caniuse.com/#feat=requestanimationframe) it. For older browsers (i.e. IE9), it uses previous API as a fallback method to display animations. If you want to learn more about **RequestAnimationFrame**, you can refer this good [blog post](https://css-tricks.com/using-requestanimationframe/).
-
-
-
-
-
-
-
-#### 4\. escapeSelector( ) for Escaping Strings with special meaning
-
-The new `$.escapeSelector()` method allows you to escape strings or characters that mean something else in CSS selector. This method is useful for situations where a class name or an ID contains characters that have a special meaning in CSS, such as the dot or semicolon. It's not a frequent occurring issue, but if you get into a problem like this, now you have an easy way to fix it.
-
-
-//consider this is your element
-
-
-
-//above element can't be selected like this because the selector is parsed as "an element with id 'abc' that also has a class 'def'.
-```$('#abc.def')```
-
-//with jQuery 3.0 it can be selected like this
-```$( '#' + $.escapeSelector( 'abc.def' ) )```
-
-
-
-
-#### 5\. Additional Protection against XSS Attacks
-
-jQuery 3.0 added an extra security layer for protection against [Cross-Site Scripting (XSS)](https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)) attacks. It requires developers to specify `dataType: 'script'` in the options of `$.ajax()` and `$.get()` methods. In other words, While making a request for a script on a domain other than the one that hosts the document, you must now explicitly declare this in the options.
-
-> _Cross-Site Scripting (XSS) attacks are a type of injection, in which malicious scripts are injected into otherwise benign and trusted web sites. XSS attacks occur when an attacker uses a web application to send malicious code, generally in the form of a browser side script, to a different end user. Flaws that allow these attacks to succeed are quite widespread and occur anywhere a web application uses input from a user within the output it generates without validating or encoding it._
-
-
-
-#### 6\. Removed special-case deferred methods in .ajax( )
-
-The `jqXHR` object returned from $.ajax( ) is a `Deferred`. Previously, It had three extra methods with names matching the arguments object of `success`, `error` and `complete`. In jQuery 3.0 these methods have been removed. Now you can use the `Deferred` standard methods of `done`, `fail` and `always` or you can use the new `then` and `catch` methods.
-
-
-
-#### 6\. New signature for .get( ) AND .post( )
-
-jQuery 3.0 adds a new signature for the $.get( ) and the $.post( ) functions by adding a `settings` parameter to align them to $.ajax( ). It's an object that can possess many properties and its the same object that you can provide to $.ajax( ). The only difference when passing the same `settings` object to $.get() and $.post() as opposed to $.ajax() is that the method `property` is always ignored.
-
-```
-//HTTP Get
-$.get([settings])
-
-//HTTP Post
-$.post([settings])
-```
-
-
-
-#### 7\. Class Manipulation Methods Support SVG
-
-jQuery never fully supported SVG and this hasn't changed in jQuery 3.0. The jQuery methods that manipulate CSS class names, such as `.addClass()` and `.hasClass()` can now be used to manipulate SVG documents as well. This means you can find classes with jQuery in SVG and then style the classes with CSS.
-
-
-
-#### 8\. Easy Show/Hide Logic
-
-This is one important change that you should should remember. From now on, the `.show()`, `.hide()` and `.toggle()` methods will focus on inline styles rather than computed styles. The docs asserts that the most important result will be:
-
-> _As a result, disconnected elements are no longer considered hidden unless they have inline display: none;, and therefore .toggle() will no longer differentiate them from connected elements as of jQuery 3.0._
-
-If you want to understand the results of the new show/hide logic in more better way, you can refer this [table](https://docs.google.com/spreadsheets/d/1UaISjcS3UMxVJ7eSBIXtK-jqF8Grl67w640peCqlkoc/edit) created by jQuery team or read this interesting [Github discussion](https://github.com/jquery/jquery/issues/2854) about it.
-
-
-
-#### 9\. Decimal values by .width ( ) and .height ( )
-
-jQuery used to return round values with `width()`, `height()` and all the other related methods. jQuery 3.0 fixes that and you'll get more accurate result (i.e. a floating number). This is a very good improvement, as sometimes, users do require the exact values when they use these for a layout.
-
-
-
-#### 10\. Deprecation of .bind() and .delegate() methods
-
-jQuery 1.7 introduced the `.on()` method for attaching event handlers. jQuery 3.0 deprecated `.bind()`, `.unbind()`, `.delegate()` and `.undelegate()` methods and these methods might be removed completely in future releases. You can use `on()` and `off()` methods for all your projects, so you don't have to worry about future releases.
-
-
-
-#### Conclusion
-
-Many people consider that jQuery is dead and doesn't have a place in modern web. However, its development continues and statistics of its adoption (78.5% in the top million) contradict these claims.
-
-
-
-In this article, I've walked you through the major changes in jQuery 3.0. As you might have noticed, this version is unlikely to break any of your existing projects. Keep using jQuery and "Write Less, Do More". 🙂
\ No newline at end of file
diff --git a/posts/whats-new-jquery-3-0/images/Screen-Shot-2016-07-12-at-7.37.08-PM.png b/posts/whats-new-jquery-3-0/images/Screen-Shot-2016-07-12-at-7.37.08-PM.png
deleted file mode 100644
index 5cc2d88..0000000
Binary files a/posts/whats-new-jquery-3-0/images/Screen-Shot-2016-07-12-at-7.37.08-PM.png and /dev/null differ
diff --git a/posts/whats-new-jquery-3-0/images/eWqih.png b/posts/whats-new-jquery-3-0/images/eWqih.png
deleted file mode 100644
index 867ac14..0000000
Binary files a/posts/whats-new-jquery-3-0/images/eWqih.png and /dev/null differ
diff --git a/posts/whats-new-jquery-3-0/images/mobile-app-development-01.png b/posts/whats-new-jquery-3-0/images/mobile-app-development-01.png
deleted file mode 100644
index 52367a0..0000000
Binary files a/posts/whats-new-jquery-3-0/images/mobile-app-development-01.png and /dev/null differ
diff --git a/posts/whats-new-jquery-3-0/images/requestanimationframe-support-1024x418.png b/posts/whats-new-jquery-3-0/images/requestanimationframe-support-1024x418.png
deleted file mode 100644
index 69659f9..0000000
Binary files a/posts/whats-new-jquery-3-0/images/requestanimationframe-support-1024x418.png and /dev/null differ
diff --git a/posts/why-choose-node-js-for-web-applications/images/stock-624712_1920-1-1024x680.jpg b/posts/why-choose-node-js-for-web-applications/images/stock-624712_1920-1-1024x680.jpg
deleted file mode 100644
index ffe6063..0000000
Binary files a/posts/why-choose-node-js-for-web-applications/images/stock-624712_1920-1-1024x680.jpg and /dev/null differ
diff --git a/posts/why-choose-node-js-for-web-applications/why-choose-node-js-for-web-applications.md b/posts/why-choose-node-js-for-web-applications/why-choose-node-js-for-web-applications.md
deleted file mode 100644
index d10ce25..0000000
--- a/posts/why-choose-node-js-for-web-applications/why-choose-node-js-for-web-applications.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-templateKey: 'blog-post'
-title: '5 Reasons Why Node.js can be the Next Big Thing'
-date: 2015-12-10
-featuredpost: false
-description: >-
- Codebrahma is a node.js development company specialised in building fast, scalable and real time applications. Brief article on why choose Node.js for web applications.
-keywords:
-- Node.js development company
-- why choose nodejs
-- choosing nodejs
-- why choose nodejs over ruby on rails
-link: /why-choose-node-js-for-web-applications
-category:
-- Research and Articles
-author: Raviraj Hegde
-tags:
-- Node.js Development
----
-
-All this while when you were busy implementing PHP codes in your server applications, you just forgot that time flies by. There is a buzz that has taken over the entire world, and everybody is either talking about it or has already implemented it. Yes, that's node.js. Let's not get into the minor details, here are the five reasons why you should take a look?
-
-**If you thought your server was fast**
-
-Node.js uses JavaScript in the backend, and that's enough to understand how fast the codes execute. Moreover, it runs on the Google's V8 engine, which compiles the JavaScript directly into machine code making it faster than you can imagine. Cluttered threads are no longer a problem as a single thread takes care of multiple and concurrent client requests with the help of the 'event loop'. Scalability and rapid prototyping become a whole lot easier, whatever the application might be. The performance of node.js is tremendous when you compare the backend technologies you have at your disposal these days. As a matter of fact, Walmart's mobile site used node.js to serve their customers during The Black Friday sale in 2013 and guess their server's CPU utilization, just 1%. Yes! You saw that correct.
-
-**The ever-growing NPM**
-
-Being an open-source technology, node.js has a shared repository of good-to-go tools and modules. The number of modules in the Node Package Manager (NPM) has increased at a considerable pace, just on the verge of overtaking the RoR (Ruby on Rails) gems. And, there are many at a nascent stage. Dealing with the external dependencies is quite simple. The best part is that you can even work on the core applications without knowing what's around it, and the built-in modules will take care of the rest. Needless to say, the NPM is ultra-fast and robust.
-
-**When data streaming is the real deal**
-
-I/O bound applications are at a greater advantage with the way streams are managed in node.js. Data Streaming is one of the most powerful applications of node.js given that there are very few to choose from. As a majority of the data that come into the systems are in the form of streams, a lot of time can be saved during the process. The ultimate aim is to utilize the time during another operation, and node.js facilitates just that.
-
-![stock-624712_1920 \(1\)][1]
-
-**Real-time web apps? No problem!!**
-
-The event-driven architecture of node.js is appropriate for real-time applications, especially chat applications and games. As both the client-side and the server-side are written in JavaScript, the synchronization process is better and quicker. Web socket protocol comes into picture here. Real-time applications benefit from these functionalities, so the performance of the applications does not degrade even if there is a sudden surge in the traffic. Adding to that, many cloud platforms have extensive support for node, which makes it the ultimate choice for real-time applications. Why do you think LinkedIn, Yahoo and EBay have opted for node.js?
-
-**If you want better productivity…**
-
-The productivity of a web app increases several folds with node.js because a lot of time is saved in between the lines. Merging the front-end and back-end into a single entity makes it efficient. That also implies a lesser number of employees and more profit on your side. PayPal reported 2 times increase in developer productivity after using node.js. What's your say on that?
-
-Node.js is the present trend. With the top guns like Microsoft and Yahoo switching to node is quite an inspiration for you to choose it, a lot of things are yet to be tested. But that should not stop you from trying it out!!
-
-PS: If you are looking for trustworthy [Node.js development company][2] for your product then definitely you must check out Codebrahma. We have already implemented and launched several successful Node.js projects.
-
-[1]: ./images/stock-624712_1920-1-1024x680.jpg
-[2]: /nodejs-development-company/
-
-
\ No newline at end of file
diff --git a/posts/why-every-business-should-consider-ecommerce/2017-05-22-Why-Every-Business-Should-Consider-Ecommerce.md b/posts/why-every-business-should-consider-ecommerce/2017-05-22-Why-Every-Business-Should-Consider-Ecommerce.md
deleted file mode 100644
index bd35f56..0000000
--- a/posts/why-every-business-should-consider-ecommerce/2017-05-22-Why-Every-Business-Should-Consider-Ecommerce.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Why Every Business Should Consider Ecommerce'
-date: 2017-05-22
-featuredpost: false
-description: >-
- eCommerce is one of the fastest growing sectors in the recent past. While many businesses have transitioned to ecommerce, many remain resistant. Should you?
-keywords:
-- ecommerce development
-- ecommerce store
-- setting up ecommerce store
-- custom ecommerce store
-author: Anand Narayan
-link: /why-every-business-should-consider-ecommerce
-category:
-- Business
-tags:
-- ecommerce development
----
-Ecommerce has been one of the most talked about sectors in the new age. While the majority of the internet blog space has been occupied by the giants, the likes of Amazon and Alibaba – it’s really the smaller (comparatively) businesses that stand to gain the most. Independent merchants looking to go online have two options at their behest – become a seller on one of the platforms (like Amazon) or set up their own ecommerce store.
-
-Joining hands with a platform like Amazon has a lot of benefits and makes the whole process rather easy. They even take care of shipping and returns, allowing you to solely focus on production and handling operations. But if you’re looking to build your own brand and be in complete control of every aspect of your business, you’re better off setting up your own ecommerce store.
-
-Businesses that have been flirting with the idea of ecommerce for sometime now should consider getting serious about it. The advantages of having your own ecommerce far outweigh the amount of time, effort and money you’d spend on setting it up. Here are some of the reasons why every retail business should consider an ecommerce store:
-
-
-
-## commerce Helps You Go From a Local to a Global Seller
-As a brick and mortar store, your customer base is usually confined to the people living within a certain distance from you. Going online opens up a whole new customer base – anyone, anywhere in the world, interested in what you’re selling can purchase your product.
-The right marketing strategies coupled with a kickass customer service can rapidly grow your business. You need to have the basics in place, however, before you can capitalize on internet marketing and win.
-
-The basics of setting up an ecommerce store include:
-
-__Recognizable Brand__ – Invest in creating a brand that people will be able to recognize instantly. So many businesses undermine the power of brand, only to realize later on when it’s too late. A brand gives your business it’s own personality – and your businesses’ personality dictates how users interact with your business.
-
-__Solid ecommerce platform__ – Because of the ecommerce boom – a lot of out of box solutions have come into being. They allow you to set up a store within minutes, with minimum investments. While these options are quite good for newer businesses looking experiment, established businesses should always look towards a customized solution.
-Building your own ecommerce store from scratch gives you the power of flexibility. As a business looking to be a global force – you need to have complete control over what your site looks like and how it works.
-
-[Also read: Run Your Online Store Like A Pro.](/ecommerce-run-online-store-like-pro/)
-
-## Ecommerce Reduces Your Business Overheads
-The biggest advantage of selling your products via an online store is that you save costs on renting, managing and running a physical store. You don’t to pay exorbitant rents, no store managers or even physically keep a stock. All you need a storage space where you keep your inventory, a few people to help manage and a solid ecommerce store.
-
-Expanding your service into a new geographical area doesn’t require much as well – all you need is a delivery partner who services that area. And ofcourse, the business operations to handle the growth. The reduced overheads mean that you can effectively sell for a lot cheaper than the physical stores. Coupons and discounts are an instant advantage. You can invest the difference in marketing that’ll have a bigger, more direct impact on your business.
-
-
-
-## Ecommerce Has Leveled the Playing Field
-One of the biggest differentiating factors between you and your competitors can be the uniqueness of your product. If your business targets a niche that’s not very competitive, you’ll have an easy time promoting your business on the internet. Again, leveraging internet marketing channels will help you be found by your global target audience.
-
-If you’re competing in a very populated segment, your customer service and the product quality could be the differentiating factor. No matter how you plan to position your business, competing for views on the internet is a lot easier than using traditional media sources. Old school advertising practices and channels are way too costly. Business with the deepest pocket would almost always win when playing on traditional media channels.
-
-Internet has proven to be a great leveler. Anyone using the right SEO practices with a high value proposition can get found by their target audience. Forums and review platforms have allowed customers to review and rate businesses. Because the transparency is rather high, businesses strive to compete on quality rather than the amount of money that have.
-
-## Ecommerce Helps You Be Where Your Customers Are
-The world is moving towards digital. There are more mobile phones in the world than people. The rate at which people are adopting technology is far higher than ever before. In such a scenario, it only makes sense to be present where the majority of your customer base is. Think of it as opening a store in a mall versus opening it on a lonely street. Malls attract people in huge numbers – being present there will get you a lot more walkins.
-
-A study by UPS in 2015 revealed that a staggering 93% people prefer local businesses that have an online store. It gives them the convenience of online shopping with a promise of better service and unique products.
-
-
-Getting an online store for your business could very well be the difference between a double digit growth versus a slow 5% growth. If you’re still not convinced – research more or [drop us a message](/contact). With the way things are moving, the future of shopping could be very different from what it is currently. You wouldn’t want to miss out this this opportunity!
\ No newline at end of file
diff --git a/posts/writing-good-project-brief/2017-02-14-Writing-a-Good-Project-Brief.md b/posts/writing-good-project-brief/2017-02-14-Writing-a-Good-Project-Brief.md
deleted file mode 100644
index 26b3548..0000000
--- a/posts/writing-good-project-brief/2017-02-14-Writing-a-Good-Project-Brief.md
+++ /dev/null
@@ -1,128 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'Writing a Good Project Brief'
-date: 2017-02-14
-featuredpost: false
-category:
-- General
-description: >-
- If you're wondering how a good project brief looks like, you've come to the right place. Learn the components and structuring of a solid project brief.
-link: /writing-good-project-brief
-author: Anand Narayan
-tags:
-- project brief
-- product development
-- project management
----
-
-You have an idea that you want to develop and you’re convinced that hiring an outsourced team is the best way to move forward. You spent hours researching about the best agencies to work with and shortlist a bunch of them. Now you need to finalize the one that will turn your idea into a reality. The next thing you need to do is create a solid project brief and share it with all the shortlisted agencies, to kick off discussions.
-
-In short, a project brief is a document summary of your idea. It contains the ‘hows’ of your project, and could also include the ‘whys’. The best way to imaging a project brief, is a document that is read by a complete stranger and she understanding, in entirety, what is it that you’re looking to build. There are certain other things that you need to add, for example, things like timelines and budget constraints to complete it. Software agencies will use your project brief as a basis of scoping out the work and estimating timelines, manpower/skills required, costs associated with the project amongst other things. Hence, writing a comprehensive project brief can save you a lot of time and make the process generally smoother.
-
-## Components of a Project Brief
-
-Start a project brief with a basic introduction of the idea along with the end goals. You can also include the type of audience your application will target, marketing strategies you have in mind and whatever you feel would help the agencies deliver.
-
-A good project brief must include the following components:
-
-__Scope of work__
-
-The scope of work contains what you’re looking to build. Depending on how deeply you’ve thought through the project, your scope of work could be defined with the exact functionality and user flow. For example, if you already have an application developed and are looking to add a few features on top of it – your scope of work would be extremely well defined.
-
-Or you could have a more loosely defined features if you’re still exploring and are looking for inputs from the software agency. For example, you’re looking to build a mobile application that promotes loyalty amongst restaurant patrons.
-
-__Budget__
-
-While it’s difficult for clients to ascertain a certain number to the project, it always helps an agency when an upper cap if defined. Defining a budget within the project brief also helps agencies create a customized solution, that’ll get the work done and fit within your budget.
-
-__Timelines__
-
-This section communicates how fast you’re looking to hit the market and the kind of urgency the agency will have to work with. Setting a soft deadline, ‘we’re looking to launch the first version of the product within six months’, creates a positive pressure and can help agencies figure how to best allocate resources.
-
-
-The scope of a project, timelines and budget are highly interdependent. The more defined the scope of the project is, the easier it is to estimate timelines and budget. If you’re looking to expedite development, costs might go up. Complex projects generally need to keep the timelines and budget flexible, otherwise the quality might be compromised.
-
-Depending on which stage your project is and the level of flexibility you’re open to, the project brief might vary from a single paragraph to a detailed multi-page document.
-
-## Exploratory Project Briefs
-If your project is still in the ideation phase, and you’re exploring the technologies, features, growth tactics etc – you’ll most probably be working with what we call an ‘Exploratory Brief’. These briefs are rather loosely defined without most of (or any) specifics.
-
-__An example:__
-
-__Summary__: We’re looking to build a mobile application that’ll help foster loyalty amongst diners. Think of it as a loyalty card, but brand independent and on mobile.
-
-__Application Flow__
-
-__Users (diners) should be able to:__
-
-Click pictures when they are at a partner restaurant.
-
-Share it on social media platforms.
-
-Earn points on each share.
-
-Redeem points in partner restaurants.
-
-__Partner restaurants should be able to__:
-
-View and respond to users who have shared images
-
-Provide discounts on offers based on points collected
-
-__Devices__:
-
-Devices will be decided as per the markets targeted.
-
-This project brief barely touches upon what the app should be able to do. There’s no mention of the specifics, the platforms it will be developed for, technologies to be used etc.
-
-It’s essential to attach a budget to exploratory projects. As the scope is loosely defined, the agencies could go on and add a lot of features, fancy technologies, high end systems that would really shoot up the prices. Keeping a budget defined helps them define and work within that budget.
-
-
-## Estimation Project Briefs
-These project briefs have a clearly defined scope of work. They are used to get an idea of the cost and timelines from different agencies.
-
-__Example:__
-
-Summary: We’re looking to build a mobile application that’ll help foster loyalty amongst diners. Think of it as a loyalty card, but brand independent and on mobile.
-
-__User Definition:__
-
-- There are two types of users on the application:
-
-- End Users (Diners)
-
-- Partner Users (Restaurants)
-
-__Application Flow (End Users)__
-
-- End users will be able to:
-
-__Sign Up__
-
-- Primary sign up method for users will be using their mobile numbers.
-
-- They will also be able to sign up using Facebook Login
-
-- They will also be able to sign up using Twitter Login
-
-- In case of social login, users will be prompted to add their mobile numbers.
-
-__Creating Profile__
-- Users will be create their profiles.
-
-- A public profile will include profile picture, location, favourite restaurants.
-
-- Incase of social signup, details to be pulled in from social profiles.
-
-- Add / edit mobile number, private. Not visible publicly.
-__Devices:__
-
-End user application will be an iOS application, built natively.
-
-Partner application will be a web and iOS application (native) with features described in the ‘Application Flow’.
-
-Every single aspect of the project is carefully thought out and included. The agency’s job is now to merely estimate timelines and cost of the project. The scope of project is fixed whereas the timelines and budget are kept open.
-
-A project brief is considered successful if it can clearly communicate the requirements of the project to everyone involved in it, and can help you choose the right development partners.
-
-If you’re looking for development help, [we’d be happy to have a word with you!](/contact)
diff --git a/posts/writing-good-project-brief/images/projectbrief-01-1024x1024.png b/posts/writing-good-project-brief/images/projectbrief-01-1024x1024.png
deleted file mode 100644
index b5470f1..0000000
Binary files a/posts/writing-good-project-brief/images/projectbrief-01-1024x1024.png and /dev/null differ
diff --git a/posts/wwdc-2016/2016-06-17-WWDC-2016-Everything-We-Know.md b/posts/wwdc-2016/2016-06-17-WWDC-2016-Everything-We-Know.md
deleted file mode 100644
index 792e9a1..0000000
--- a/posts/wwdc-2016/2016-06-17-WWDC-2016-Everything-We-Know.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-templateKey: 'blog-post'
-title: 'WWDC 2016: Everything We Know'
-date: 2016-07-13
-featuredpost: false
-category:
-- General
-description: >-
- Get all the latest coverage on Apple's WWDC 2016. iOS 10, MacOS Sierra and a better Siri. Super Quick Highlights from iOS Development Company.
-keywords:
-- Everything about WWDC
-- WWDC 2016,
-author: Aravindan
-link: /wwdc-2016
-tags:
-- apple
-- iOS
-- ios development
-- wwdc2016
----
-
-Apple's World Wide Developer Conference, the holy grail of all developers is back. Here is the quick overview of everything that happened at WWDC 2016.
-
-Right from the day the dates for the Apple conference was announced as June 13th to 17th, the expectations for the new launches was quite high. With all the excitement, thousands of Apple fans turned to their best friend Siri for titbits on what's coming. Here's what Siri had to say:
-
-
-
-##
-
-Getting a ticket to attend the apple conference was never an easy task. The $1599 ticket in itself is a daunting affair for many. This year apple had also introduced the "lottery" whereby you would have to test your luck to earn the privilege of paying $1599 to attend the conference.
-
-The key note speech delivered by Tim cook, CEO of apple is the high light of the event. He gives out all the new launches for the year. The highly anticipated speech of wwdc 2016 started of on the first day of the event and Tim cook definitely did not disappoint the crowd. Here are the most important parts of the speech
-
-## The Keynote- Reason why all of us are here :
-
-The apple CEO, Tim cook delivered the keynote speech in the conference this year. Some of the much anticipated upgrades were introduced during the speech.
-
-### OS X GETS A NEW NAME :
-
-
-
-The OS X that has been powering the macintosh since 2002 is now re-named macOS and the latest iteration is called the Sierra. The beta version of the same will be available by july and the final version will be out by fall. The most interesting feature of this new OS is the continuity across devices. The universal clipboard feature demonstrated by Craig Federighi potrays the power of continuity. This feature allows users to cut and copy across various devices. Now you can cut your favourite beyonce/shakira images on your mac and paste it straight into your iphone. You can now also save your MAC desktop to icloud and access it from different computers using icloud drive.
-
-### Apple's virtual Girl friend comes to infest your desktop as well :
-
-Competing with Cortana on the desktop of windows 10,the macOS Sierra will also bring Siri on to your desktop. Siri will be accessible from the dock and the top right corner near the spotlight. So we can now get all the witty one liners and the highly intelligent assistance of siri (no sarcasm intended) at the click of a button on your mac.
-
-### Apple Pay online:
-
-### 
-
-The Apple fans in US, UK, Canada, Australia, and Singapore have called for a celebration. They have the unique privilege of making online payments through safari. Apple pay has gone online and the authentication happens through your touch id on your iphone or watch thus eliminating the need for credit cards.
-
-### Clock ticks faster. Finally!
-
-###
-
-The watch OS 3 was introduced with a lot of upgrades but the most important update is, the OS that allows the apps to get 70% faster. These unbelievable increase in efficiency is brought about by refreshing the background and storing the apps in memory. The side button gives the users access to the dock, making it a little more like an iphone with a new control center.
-
-Apple has also come up with a host of new features, such as a "scribble"- a keyboard to respond to messages, an sos feature that contacts 911 if the side button is held down, a collection of fitness apps including activity specific watch faces and a meditation app called "breathe".
-
-### iOS updated
-
-The iOS has undergone a tremendous change. Craig federighi, VP of software engineering called this release, "the biggest iOS release ever for our users". The music and maps have been completely re-designed. The all new "Raise and awake" feature allows the lock screen to come alive when you lift the phone. This feature also reveals newly modified notifications with which you can interact using the 3d touch.
-
-### Music Redefined
-
-### 
-
-Apple seems to have decided to get its hands dirty in the fight with spotify. The one year old apple music has been redesigned to accommodate many new features. A separate section of downloaded music and the new "discovery mix" that tailors the play list to listeners taste. The song lyrics can also be accessed now.
-
-### Apple and the Idiot box
-
-
-
-The relatively new TV OS of apple has also undergone its share of upgrades. It now hosts over 13o0 video chanells and 6000 apps. Apple is bringing a new remote app that possess all the functionalities of the tv remote.
-
-### iMessages becomes 'my messages' again!
-
-
-
-In reply to strong competition from messaging apps such as whatsapp and snapchat, the iMessages app is being completely revamped. The new messaging app will include option for hand-written notes, animated effects such as strobe lights, balloons, and confetti. One more interesting feature is the 'invisible ink'. This features allows the messages to be hidden/blurred until swiped over. In the world of private messages, this is a smart addition to have in the messaging app. Developers are also getting a bonus as they can now develop apps like stickers for the iMessages application.
-
-### Photos Vs Google photos
-
-
-
-Apple is taking on one powerful component with an upgrade in each segment. The photos upgrade is aimed at taking on the google photos. Apple allows the organizing of data automatically through facial recognition. The application is aptly named memories. The memories bundles together photos according to events and locations.
-
-### Voicemail transcription comes to iOS
-
-The new iOS allows automatic transcription of voicemails, converting them into text. Apple is also all set to battle spam callers. New APIs are being put in place to warn users about spam calls before they pickup.
-
-### Siri opens up to developers
-
-After a long and languished wait the developer community finally get a taste of nectre as apple has decided to open up siri. Now developers can integrate siri functionality into their website. So in the near future you will be able to book ola, make a reservation and watch your favorite video online with just a command to siri.
-
-### Predictive typing
-
-"Can i please have my old black and white phone back"
-
-This seems to be the single wish of most of the frequent texters today. Predective texting was an amazing idea that was to make our lives simple but it has only managed to do the opposite so far. The ineffeciiency of predictive texting has made it a considerable nuisance as of today.
-
-Apple claims to have solved this issue. Quicktype will now bring the "siri intelligence" to the keyboard. Now that siri has opened up,multiple features would be added to your keyboard. The power of this functionality would unfold before us in time. Let us wait to watch the fun.
-
-### Collecting your data without collecting your data
-
-Apple is the leading advocate of privacy in the digital world. But its policy of privacy is creating a lag for its customer understanding capabilities. In the age of big data and machine learning apple would fall behind its competitors if it is not able to collect the relevant amount of user data. Apple's ingenious solution to this is "differential privacy"
-
-According to apple
-
-"Differential privacy is the statistical science of trying to understand as much as possible about a group while learning as little as possible about an individual in it."
-
-As a part of differential privacy policy the AI analysis of your texts will remain on your phone and will not be transferred to the cloud.
-
-## The culmination
-
-The apple WWDC 2016 is a collection of small upgrades that combine together to make the use of apple eco-system more easy, efficient and safe. The upgrades on macOS and the apple watch are quite significant changes. The newly opened up Siri provides a great opportunity for enthusiastic developers across the globe. The impact on the upgrades on the individual devices independent of the apple eco-system is a question that is yet to be answered. But on the whole, yet another very impressive presentation by the apple team.
-
-Do you feel there are some more important points to be added? What do you think would be the impact of all the updates? Go ahead and add your thoughts to the comments section and let us discuss
diff --git a/posts/wwdc-2016/images/Apple_Music_logo.svg_-1.png b/posts/wwdc-2016/images/Apple_Music_logo.svg_-1.png
deleted file mode 100644
index bc6b6b8..0000000
Binary files a/posts/wwdc-2016/images/Apple_Music_logo.svg_-1.png and /dev/null differ
diff --git a/posts/wwdc-2016/images/Apple_Pay_logo.svg_-1.png b/posts/wwdc-2016/images/Apple_Pay_logo.svg_-1.png
deleted file mode 100644
index 27de0d9..0000000
Binary files a/posts/wwdc-2016/images/Apple_Pay_logo.svg_-1.png and /dev/null differ
diff --git a/posts/wwdc-2016/images/OS-TV.jpg b/posts/wwdc-2016/images/OS-TV.jpg
deleted file mode 100644
index 771aaf7..0000000
Binary files a/posts/wwdc-2016/images/OS-TV.jpg and /dev/null differ
diff --git a/posts/wwdc-2016/images/OSX1.jpg b/posts/wwdc-2016/images/OSX1.jpg
deleted file mode 100644
index ebdd057..0000000
Binary files a/posts/wwdc-2016/images/OSX1.jpg and /dev/null differ
diff --git a/posts/wwdc-2016/images/googlevsapple-1.jpg b/posts/wwdc-2016/images/googlevsapple-1.jpg
deleted file mode 100644
index 5b5e1db..0000000
Binary files a/posts/wwdc-2016/images/googlevsapple-1.jpg and /dev/null differ
diff --git a/posts/wwdc-2016/images/siri-578x1024.jpg b/posts/wwdc-2016/images/siri-578x1024.jpg
deleted file mode 100644
index 5fc18f7..0000000
Binary files a/posts/wwdc-2016/images/siri-578x1024.jpg and /dev/null differ
diff --git a/posts/wwdc-2016/images/siri-screen-1.jpg b/posts/wwdc-2016/images/siri-screen-1.jpg
deleted file mode 100644
index 0fea453..0000000
Binary files a/posts/wwdc-2016/images/siri-screen-1.jpg and /dev/null differ
diff --git a/posts/wwdc-2016/images/tv-os-1-1024x576.jpg b/posts/wwdc-2016/images/tv-os-1-1024x576.jpg
deleted file mode 100644
index 9d561cc..0000000
Binary files a/posts/wwdc-2016/images/tv-os-1-1024x576.jpg and /dev/null differ
diff --git a/projects/artforth/artforth.mdx b/projects/artforth/artforth.mdx
deleted file mode 100644
index 4766572..0000000
--- a/projects/artforth/artforth.mdx
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: ArtForth
-description: Check out how we built Artforth, portal where you can rent art. Rails, BackboneJS, Rspec, Bootstrap. HIre us for custom rails application development.
-meta:
-- Ruby on Rails solution provider
-- Ruby on Rails services
-keywords:
-- ruby on rails development company in san francisco
-- ruby on rails dev shop in USA
-link: /artforth
----
-
-
-
-## About
-Artforth is a portal where you can rent art. Subscription based renting of art, so that you can try out everything in stock, before you settle on buying the original.
-
-## Problem
-The client wanted to create a portal to connect up-and-coming artists with art connoisseurs. People looking to buy art should be able to queue a list of art pieces, receive prints to try at home and return the pieces for the next ones to be shipped.
-
-## Solution
-We created a beautiful (it’s art, after all) e-commerce type portal where users are able to queue art pieces that they like. Then on a basis of monthly subscription, the users will receive a certain number of art prints that they can ‘try’ out before the next cycle of art is shipped. We built a classy admin panel to upload various kind of art and manage the orders on the site. The interface was mainly drag and drop, for the user to create their queue. Using Stripe, we created the subscription based payment model.
-
-## Technologies
-- Ruby on rails
-- jQuery
-- Backbone.js
-
-## Testimonial
-
-
-
-
-
diff --git a/projects/artforth/images/artforth.png b/projects/artforth/images/artforth.png
deleted file mode 100644
index a9bacff..0000000
Binary files a/projects/artforth/images/artforth.png and /dev/null differ
diff --git a/projects/clinsyte/clinsyte.mdx b/projects/clinsyte/clinsyte.mdx
deleted file mode 100644
index f21dbfc..0000000
--- a/projects/clinsyte/clinsyte.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: Clinsyte
-description: Clinsyte is an application built on Ruby on Rails and ReactJS. A complete health management platform for patients, this app has a ton useful features. Checkout how Codebrahma built Clinsyte.
-meta:
-- Ruby on Rails solution provider
-- Ruby on Rails services
-- ReactJS solution provider
-- ReactJS services
-keywords:
-- reactjs app
-- ror app
-- doctor patient app
-- medical app
-- react js development company in san francisco
-- react js dev shop in USA
-- ruby on rails development company in san francisco
-- ruby on rails dev shop in USA
-link: /clinsyte
----
-
-
-
-
-Clinsyte is a platform which connects patients and doctors. Patients can search for doctors, send request to them and vice versa.
-
-
-## Features
-
-
-
-Patients can schedule an appointment with doctors. The entire patient data is tracked through the patient chart module in the application.
-
-
-
-This application also has surveys which are created by either admin or physician, will be sent to the patients after they take medicine to get their feedback on the therapies. The feedback is considered for data analytics and shows the visual representation of the effect of therapies to the doctors.
-
-### Appointment Booking
-
-Patients can directly book appointments with their doctor via the app. A robust yet simple calendar based booking system, with an intuitive flow so anybody can book their appointment easily.
-
-
-
-
-### Post Medication Survey
-
-Doctors can run surveys after recommending medications to their patients to gather data about the medications interactions. This is a very valuable feature and can help doctors understand medication and its implications much better.
-
-
-
-## Technologies used:
-
-- Ruby on Rails
-- React.js
-
-### Testimonial:
-
-> “We are very pleased with the final product delivery and impressed with the team's dedication and focus ... even during the down ramp, which is very crucial in ensuring smooth transition. Once again, we praise the talent and drive of the team mentioned above and promptness in the response whenever issues were encountered.
->
-> Finally, as we reflect on our experience working with the team at Codebrahma, without hesitation, I can say they did a commendable job and we'll look forward to working with this team again.”
->
-> — Nitesh Patel, Co-Founder, Clinsyte
->
\ No newline at end of file
diff --git a/projects/clinsyte/images/appointment.png b/projects/clinsyte/images/appointment.png
deleted file mode 100644
index 68ec3ae..0000000
Binary files a/projects/clinsyte/images/appointment.png and /dev/null differ
diff --git a/projects/clinsyte/images/careteam.png b/projects/clinsyte/images/careteam.png
deleted file mode 100644
index 638d4cb..0000000
Binary files a/projects/clinsyte/images/careteam.png and /dev/null differ
diff --git a/projects/clinsyte/images/clinsyte.png b/projects/clinsyte/images/clinsyte.png
deleted file mode 100644
index 236c4ac..0000000
Binary files a/projects/clinsyte/images/clinsyte.png and /dev/null differ
diff --git a/projects/clinsyte/images/patient-chart.png b/projects/clinsyte/images/patient-chart.png
deleted file mode 100644
index d59e7e9..0000000
Binary files a/projects/clinsyte/images/patient-chart.png and /dev/null differ
diff --git a/projects/clinsyte/images/survey-listing-and-filtering.png b/projects/clinsyte/images/survey-listing-and-filtering.png
deleted file mode 100644
index 503e14e..0000000
Binary files a/projects/clinsyte/images/survey-listing-and-filtering.png and /dev/null differ
diff --git a/projects/embibe/embibe.mdx b/projects/embibe/embibe.mdx
deleted file mode 100644
index 0dccfd0..0000000
--- a/projects/embibe/embibe.mdx
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Embibe | Emerging EdTech Startup
-description: Check out how we built Embibe using Ruby On Rails, AngularJS, RSpec, Faye, Ruby. Hire us for Rails Social Network Development.
-meta:
-- Ruby on Rails solution provider
-- Ruby on Rails services
-keywords:
-- ruby on rails social network
-- rails social network
-- ruby social network
-- social network built on ruby
-- ruby on rails development company in san francisco
-- ruby on rails dev shop in USA
-link: /embibe
----
-
-
-
-Embibe is one of the first companies to help students prepare for IIT-JEE online. They can invite their friends and compete with each other on test and get detailed analytics on how they performed.
-
-
-
-## Challenges:
-* Building a scalable realtime chat engine amongst friends, similar to facebook was a real challenge.
-* Architecting and developing a customizable gamification engine that kept the students motivated to go on with their preparation and attack their weakness.
-* We also wanted to develop a test taking interface that was really simple to use and minimal. We wanted the interface to be inviting so that the students took more and more tests.
-* Doing Analytics on test data and bringing a social context to it was really challenging.
-
-## Solution:
-* We architected a realtime chat engine based on the pub sub protocol using Faye, an evented server in ruby. We built a modular gamification module that plugs into the application user events and the test score and provides rewards to the user.
-* The rails social network was designed with single test taking interface with no refresh whatsoever. This made is tremendously quick for the students to attempt multiple questions. We built an analytics engine, completely isolated from the system do the number cruching and we built some cool visualization to see the results.
-
-## Benefits:
-* _Real time chat engine:_ Students were able to chat with their peers and plan their preparation with ease.
-* _In depth Analytics:_ Students knew exactly where they stood amongst their friends and peers across the platform.
-* _Increasing stickiness:_ Students spent more time on the site, attempting more questions. This splurge in time spent was primarily due to Gamification.
-
-## Gamified Platform
-
-
-The platform was created in a way to make learning fun. Gamification of learning is absolutely essential, specially when it comes to online learning. It is one of the most important factors contributing to completion as well as retention rates.
-
-## Competitive Analysis
-
-
-As the saying goes, you cant improve what you dont measure. Since Embibe is essentially a platform to help students improve their test taking ability and understanding for competitive exams – building a robust analytics platform was a necessity.
\ No newline at end of file
diff --git a/projects/embibe/images/6.jpg b/projects/embibe/images/6.jpg
deleted file mode 100644
index 44a0b79..0000000
Binary files a/projects/embibe/images/6.jpg and /dev/null differ
diff --git a/projects/embibe/images/8.jpg b/projects/embibe/images/8.jpg
deleted file mode 100644
index 29caddd..0000000
Binary files a/projects/embibe/images/8.jpg and /dev/null differ
diff --git a/projects/embibe/images/9.jpg b/projects/embibe/images/9.jpg
deleted file mode 100644
index 86b322b..0000000
Binary files a/projects/embibe/images/9.jpg and /dev/null differ
diff --git a/projects/embibe/images/IMG_2314.JPG b/projects/embibe/images/IMG_2314.JPG
deleted file mode 100644
index e73f995..0000000
Binary files a/projects/embibe/images/IMG_2314.JPG and /dev/null differ
diff --git a/projects/embibe/images/embibe.png b/projects/embibe/images/embibe.png
deleted file mode 100644
index 21c86e8..0000000
Binary files a/projects/embibe/images/embibe.png and /dev/null differ
diff --git a/projects/harmoney/harmoney.mdx b/projects/harmoney/harmoney.mdx
deleted file mode 100644
index 7d21da2..0000000
--- a/projects/harmoney/harmoney.mdx
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: Harmoney
-description: Check out how we built a custom ruby on rails application with salesforce integration for Harmoney. Hire best Ruby on Rails Development Company to build your product.
-meta:
-- Ruby on Rails solution provider
-- Ruby on Rails services
-- Angular solution provider
-- Angular services
-keywords:
-- ruby on rails development
-- ruby on rails portfolio
-- ruby on rails application development company
-- ruby on rails development companies in bangalore
-- ruby on rails development company
-- ruby on rails development company in san francisco
-- ruby on rails dev shop in USA
-- angular development company in san francisco
-- angular dev shop in USA
-link: /harmoney
----
-
-
-
-Harmoney is New Zealand’s first licensed Peer to Peer Lending platform. Providing personal loans at low interest rates and high return investment opportunities.
-
-
-
-## Problem
-
-Harmoney approached us in December 2013 with an idea to build a fully automated peer to peer to money lending marketplace. They wanted all their data to be in sync real time with their backend customer support infrastructure that sits on salesforce. Their customer care team would need this data in real time as their clients would call them during the application process. Loan Application forms are generally long and tedious, but harmoney wanted us to design a form that had a low drop off rate.
-
-* Building a smooth experience for the user during various long steps of the application process.
-* Communicating the data in real time with the Customer Care infrastructure.
-* Obtaining all the information required to process a loan without the user dropping off.
-
-## Solution
-
-We built a Rails application that would constantly listen to the Database and queue each updation into message queue. Then we implemented a worker mechanism with scheduling and decay algorithms to precisely replicate the updates on Salesforce. After multiple iterations of the User Interface and various rounds of A/B testing, we achieved a huge decrease in the loan application drop-off rates – one of their biggest challenges. Rails and AngularJS based, Harmoney was off to a smooth start with the user experience loved by all the users.
-
-* Implemented Messaging Queues and Async Pub Sub protocols for smooth experience.
-* Implemented a Bidirectional RealTime Sync between Salesforce and our RDBMS.
-* Designed a guided loan application process.
-
-
-
-### Peer-To-Peer Matching
-Matching people who want to invest, with people who want to borrow. It’s an efficient model that allows funds to flow directly between investors and borrowers without the need for a traditional Financial intermediary, giving everyone a better deal.
-
-
-
-### Simplified User Onboarding
-Mulitple iterations on the user onboarding process coupled with extensive and in-depth A/B testing resulted in one of the lowest drop off rates seen in the Fintech industry. Easier onboarding process equals happier users, meaning a lot more business!
-
-
-
-## Technologies:
-* Ruby on Rails
-* Angular
-* RefineryCMS
-* Salesforce
-* Cloud Lending
-
-CloudLending is a leading Fintech cloud provider, which in turn led to selection of salesforce since CL is available in salesforce only. Refinery is choose to dynamically change the homepage or other static pages. Angular and Ruby on Rails is choosen as they are fast in development and are latest technologies.
-
-## Testimonial:
-
-
diff --git a/projects/harmoney/images/Screen-Shot-2016-12-19-at-6.28.20-PM.png b/projects/harmoney/images/Screen-Shot-2016-12-19-at-6.28.20-PM.png
deleted file mode 100644
index cf7f642..0000000
Binary files a/projects/harmoney/images/Screen-Shot-2016-12-19-at-6.28.20-PM.png and /dev/null differ
diff --git a/projects/harmoney/images/Testimonial.png b/projects/harmoney/images/Testimonial.png
deleted file mode 100644
index 2b4a495..0000000
Binary files a/projects/harmoney/images/Testimonial.png and /dev/null differ
diff --git a/projects/harmoney/images/form.png b/projects/harmoney/images/form.png
deleted file mode 100644
index def8377..0000000
Binary files a/projects/harmoney/images/form.png and /dev/null differ
diff --git a/projects/harmoney/images/harmoney-screen1.png b/projects/harmoney/images/harmoney-screen1.png
deleted file mode 100644
index b0b52de..0000000
Binary files a/projects/harmoney/images/harmoney-screen1.png and /dev/null differ
diff --git a/projects/harmoney/images/harmoney-screen2.png b/projects/harmoney/images/harmoney-screen2.png
deleted file mode 100644
index 77caa57..0000000
Binary files a/projects/harmoney/images/harmoney-screen2.png and /dev/null differ
diff --git a/projects/harmoney/images/harmoney-screen3.png b/projects/harmoney/images/harmoney-screen3.png
deleted file mode 100644
index 19b4922..0000000
Binary files a/projects/harmoney/images/harmoney-screen3.png and /dev/null differ
diff --git a/projects/harmoney/images/harmoney.png b/projects/harmoney/images/harmoney.png
deleted file mode 100644
index b32c2de..0000000
Binary files a/projects/harmoney/images/harmoney.png and /dev/null differ
diff --git a/projects/rippling/images/Rippling-Dashboard-Image.png b/projects/rippling/images/Rippling-Dashboard-Image.png
deleted file mode 100644
index 1f68d85..0000000
Binary files a/projects/rippling/images/Rippling-Dashboard-Image.png and /dev/null differ
diff --git a/projects/rippling/images/Rippling-Hero-Image.png b/projects/rippling/images/Rippling-Hero-Image.png
deleted file mode 100644
index eaa2e24..0000000
Binary files a/projects/rippling/images/Rippling-Hero-Image.png and /dev/null differ
diff --git a/projects/rippling/images/testimonial.png b/projects/rippling/images/testimonial.png
deleted file mode 100644
index 9f7737e..0000000
Binary files a/projects/rippling/images/testimonial.png and /dev/null differ
diff --git a/projects/rippling/rippling.mdx b/projects/rippling/rippling.mdx
deleted file mode 100644
index b959442..0000000
--- a/projects/rippling/rippling.mdx
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Rippling
-description: Check out how we helped create the interface that powers Rippling, the HR automation tool. Get the best ReactJS developers to build your product!
-meta:
-- react js solution provider
-- react js services
-keywords:
-- rippling
-- reactjs development
-- frontend development
-- react js development company in san francisco
-- react js dev shop in USA
-link: /rippling
----
-In 2016 Rippling CTO Prasanna Sankaranarayanan approached Codebrahma with a huge product roadmap. They wanted to build a suite of HR, Payroll, IT management, Marketplace features in their SaaS offering.
-
-They had a strong team of engineers, who were ACM ICPC finalists. The CTO himself was ranked India's no.1 programmer.
-
-## Case Study
-
-
-Helping a high potential startup accelerate product build to reach a 250 million $ valuation.
-
-[Rippling](https://techcrunch.com/2019/04/03/rippling-45-million/),
-(which recently raised 45 million on a 275 million valuation) is also founded by Parker Conrad
-(who previously founded the billion dollar company zenefits.com).
-His CTO Prasanna Sankaranarayanan
-(who is [ranked the number one programmer by TopCoder](https://community.topcoder.com/tc?module=Static&d1=features&d2=120507))
-reached out to Codebrahma during their early days to build their web and mobile frontend.
-Rippling had a killer backend team under Prasanna, who had hired a lot of his fellow TopCoder
-ranked contestants and colleagues from Google. The killer tech team was very very good when it came to writing
-complex backend logic (think payroll for the entire US). They found it very cumbersome to write pixel perfect ReactJS
-applications, which worked smoothly on the browser. This is when they reached out to Codebrahma
-
-Codebrahma reviewed the designs and the API specs of rippling, and proposed a frontend architecture
-modeled around ReactJS, Redux webpack build. We also built the react native mobile app for rippling.
-[Rippling](http://rippling.com) was so happy with the work that, they focussed on hiring for backend alone,
-and they delegated the entire frontend to Codebrahma. This massively helped them in building product very fast,
-and winning market share in the HR, and IT management space.
-Here is a testimonial from the CTO of [Rippling](http://rippling.com)
-
-
-
-We have also spent a lot of time with [rippling.com](http://rippling.com)
-and these were the sentences, we heard from them time to time
-
-"We have a large roadmap of features to build..
-And having a team like Codebrahma help us handle
-our frontend has enabled us to focus on what we know best, our backend.
-And thats what matters most to our customers!"
-
-
\ No newline at end of file
diff --git a/projects/roade/images/Home.png b/projects/roade/images/Home.png
deleted file mode 100644
index 64875c8..0000000
Binary files a/projects/roade/images/Home.png and /dev/null differ
diff --git a/projects/roade/images/Ride-Details.png b/projects/roade/images/Ride-Details.png
deleted file mode 100644
index 614eae3..0000000
Binary files a/projects/roade/images/Ride-Details.png and /dev/null differ
diff --git a/projects/roade/images/Search.png b/projects/roade/images/Search.png
deleted file mode 100644
index 2c42cfd..0000000
Binary files a/projects/roade/images/Search.png and /dev/null differ
diff --git a/projects/roade/images/Uber-Ride.png b/projects/roade/images/Uber-Ride.png
deleted file mode 100644
index 4be26a3..0000000
Binary files a/projects/roade/images/Uber-Ride.png and /dev/null differ
diff --git a/projects/roade/roade.mdx b/projects/roade/roade.mdx
deleted file mode 100644
index b069008..0000000
--- a/projects/roade/roade.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Roade
-description: Check out how we helped Roade in building an application that helps intracity commuting for people in the best and efficient way. Get the best React Native developers to build your product!
-meta:
-- react native solution provider
-- react native services
-- node.js solutions provider
-- node.js services
-keywords:
-- roade
-- react native development company
-- react native development company in san francisco
-- react native development companies in bangalore
-- react native dev shop in USA
-- node.js developement company
-- node.js development company in san francisco
-- node.js development companies in bangalore
-- node.js dev shop in USA
-link: /roade
----
-
-In 2018, Mystro Founder Herb approached Codebrahma for a new product roadmap. They wanted to build an application that helps intracity commuting for people in the best and efficient way.
-
-We built the complete stack which includes back end(written in Node.js) and front end(written in React Native) for both iOS and Android.
-
-
-
-## Challenges:
-
-The major challenge in implementing the idea like Bestride is, the data provided by the APIs of services like Uber, Lyft and other ride-hailing apps. Each service provides the ride data in different format. The app has to handle all the types of data structures without compromising the performance. In addition to that, the app should stand out from the giant competitors already in the market.
-
-Taking a careful decision on what computation needs to be on the server and what needs to be done on the client app is very critical for this project. The team has done a tremendous job in architecting the app so that there is a minimal change required to do whenever any of the API providers change their data structure.
-
-The mobile application is optimised to the level where even on continuous use of services like geolocation and a significant count of API requests made parallel at any time, the app seems to be responsive, robust and reliable.
-
-
-
-
-
-
-
-## Tech Stack:
- * Node Js for server
- * React Native for mobile app (Android and iOS)
\ No newline at end of file
diff --git a/projects/serverless/images/serverless-hero.png b/projects/serverless/images/serverless-hero.png
deleted file mode 100644
index 61726ee..0000000
Binary files a/projects/serverless/images/serverless-hero.png and /dev/null differ
diff --git a/projects/serverless/serverless.mdx b/projects/serverless/serverless.mdx
deleted file mode 100644
index 7bd0ffc..0000000
--- a/projects/serverless/serverless.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Serverless
-description: Check out how we helped create the interface that powers Serverless.com. Get the best ReactJS developers to build your product!
-meta:
-- react js solution provider
-- react js services
-- gatsby js solution provider
-- gatsby js services
-keywords:
-- serverless
-- reactjs development
-- gatsby development
-- gatsby js development
-- frontend development
-- react js development company in san francisco
-- react js dev shop in USA
-link: /serverless
----
-In 2018 Serverless VP Nick Gottlieb approached Codebrahma with idea of re-architecting [serverless.com](http://serverless.com) website. They wanted to re-architect and re-design the website, docs and blogs in 2.5 months.
-
-
-
-### Challenges
-Rewriting a website like [serverless.com](http://serverless.com) which has large number of audiences and great SEO, was a big challenge. The site has to be responsive across all the devices and it has to serve the users of all the platforms ranging from Windows IE to Apple Safari.
-
-### Solution
-Serverless website was previously written in React.js with [Phenomic](https://github.com/phenomic/phenomic). Codebrahma helped them building a fully responsive website with Gatsby.js.
-
-Codebrahma built a fully-fledged [design system for serverless](https://design-system-serverless.netlify.com/) with a great list of reusable components. And used the same in building the website.
-
-### Technologies:
-- React.js
-- Gatsby.js
-- Styled Components
-- Styled System
diff --git a/projects/starbeat/images/Create-Post.png b/projects/starbeat/images/Create-Post.png
deleted file mode 100644
index 01b27ba..0000000
Binary files a/projects/starbeat/images/Create-Post.png and /dev/null differ
diff --git a/projects/starbeat/images/Homepage.png b/projects/starbeat/images/Homepage.png
deleted file mode 100644
index ec78eec..0000000
Binary files a/projects/starbeat/images/Homepage.png and /dev/null differ
diff --git a/projects/starbeat/images/Messages.png b/projects/starbeat/images/Messages.png
deleted file mode 100644
index f9ba03f..0000000
Binary files a/projects/starbeat/images/Messages.png and /dev/null differ
diff --git a/projects/starbeat/images/Share.png b/projects/starbeat/images/Share.png
deleted file mode 100644
index ede1cfb..0000000
Binary files a/projects/starbeat/images/Share.png and /dev/null differ
diff --git a/projects/starbeat/images/Video.png b/projects/starbeat/images/Video.png
deleted file mode 100644
index 510bb4b..0000000
Binary files a/projects/starbeat/images/Video.png and /dev/null differ
diff --git a/projects/starbeat/starbeat.mdx b/projects/starbeat/starbeat.mdx
deleted file mode 100644
index 16bc82c..0000000
--- a/projects/starbeat/starbeat.mdx
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Starbeat
-description: Check out how we helped create the interface that powers Starbeat - an entertainment space focused on stars and fans. Get the best React Native developers to build your product!
-meta:
-- react native solution provider
-- react native services
-keywords:
-- starbeat
-- react native development company
-- react native development company in san francisco
-- react native development companies in bangalore
-- react native dev shop in USA
-link: /starbeat
----
-
-The app is focused on stars, their fans and all the little interactions surrounding them. The client wanted a mobile application(in React Native) that should be smooth and easy to use. It was a complicated application in terms of UI and navigations and the feature list was long.
-
-
-
-
-
-## Challenges
-Since it was a media-heavy app, we wrote our own component to render images that handled images optimally. Also, it even had a feature that cropped images to focus on people's faces.
-
-Support for several video sources.
-
-Building generalized components that handled all the types but also displayed data in different formats to accommodate carousel, list and card views.
-
-Wrote a wrapper in Kotlin and Objective C to use a Native SDK in the app.
-
-
-
-
-
-
-
-## Tech Stack:
-
-React Native, Native IOS and Android Integration
\ No newline at end of file
diff --git a/projects/the-collective/images/CartPage.png b/projects/the-collective/images/CartPage.png
deleted file mode 100644
index a1e9fda..0000000
Binary files a/projects/the-collective/images/CartPage.png and /dev/null differ
diff --git a/projects/the-collective/images/CheckoutFlow.png b/projects/the-collective/images/CheckoutFlow.png
deleted file mode 100644
index b12e1c3..0000000
Binary files a/projects/the-collective/images/CheckoutFlow.png and /dev/null differ
diff --git a/projects/the-collective/images/HomeScreen.png b/projects/the-collective/images/HomeScreen.png
deleted file mode 100644
index a098ea9..0000000
Binary files a/projects/the-collective/images/HomeScreen.png and /dev/null differ
diff --git a/projects/the-collective/images/OrderPlaced.png b/projects/the-collective/images/OrderPlaced.png
deleted file mode 100644
index ff102be..0000000
Binary files a/projects/the-collective/images/OrderPlaced.png and /dev/null differ
diff --git a/projects/the-collective/images/ProductsListingPage.png b/projects/the-collective/images/ProductsListingPage.png
deleted file mode 100644
index c8407f8..0000000
Binary files a/projects/the-collective/images/ProductsListingPage.png and /dev/null differ
diff --git a/projects/the-collective/images/SingleProductPage.png b/projects/the-collective/images/SingleProductPage.png
deleted file mode 100644
index 756ab38..0000000
Binary files a/projects/the-collective/images/SingleProductPage.png and /dev/null differ
diff --git a/projects/the-collective/images/thecollective.png b/projects/the-collective/images/thecollective.png
deleted file mode 100644
index 0fefa43..0000000
Binary files a/projects/the-collective/images/thecollective.png and /dev/null differ
diff --git a/projects/the-collective/the-collective.mdx b/projects/the-collective/the-collective.mdx
deleted file mode 100644
index 317a91d..0000000
--- a/projects/the-collective/the-collective.mdx
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: The Collective
-description: Check out how we helped TheCollective in building robust eCommerce site leveraging SpreeCommerce. We are one of the best SpreeCommerce Development Company.
-meta:
-- Ruby on Rails solution provider
-- Ruby on Rails services
-- AWS solution provider
-- AWS services
-keywords:
-- SpreeCommerce Development
-- Ruby on Rails
-- eCommerce development,
-- ruby on rails development company in san francisco
-- ruby on rails dev shop in USA
-link: /thecollective
----
-
-
-
-The Collective is a luxury e Commerce application which primarily focus on providing complete shopping experience for the customers. It was built on top of Spree Commerce, the most trusted e Commerce framework in Rails by which entire application can be built in a number of days.
-
-
-
-## Problem
-Madura Fashion & Lifestyle, a division of Aditya Birla Nuvo Ltd, is one of India’s fastest growing branded apparel companies and a premium lifestyle player in the retail sector. They were looking to create an omnichannel ecommerce platform to take their business online.
-
-## Solution
-Our team of designers and developers got together to create an omni channel ecommerce platform for the Collective. The application is based on Spree Commerce, an open source e-commerce platform that is powered by Ruby on Rails. The project had multiple parts to it – the user facing e-commerce site and admin panel to manage orders and inventory. We implemented the Database on PostgreSQL to make the data flow faster and real time. Front end design was created using Bootstrap and JQuery.
-
-
-
-### Rich User Interface
-We created a very simple-to-use yet rich product interface with multiple filters, sorting options, multiple images and magnification. Creating a breeze of a user experience was the top priority.
-
-
-
-### Streamlined Checkout
-The checkout process was streamlined with the user being able to place the order with minimum number of clicks and an option to edit the cart always at hand. Adding coupons and promo offers helped the client in converting more users into customers.
-
-
-
-
-
-
-
-## Technologies:
-
-- Ruby on Rails
-- Spree Commerce
diff --git a/projects/tripeese/images/tripeese-1.png b/projects/tripeese/images/tripeese-1.png
deleted file mode 100644
index a8efc41..0000000
Binary files a/projects/tripeese/images/tripeese-1.png and /dev/null differ
diff --git a/projects/tripeese/images/tripeese-2.png b/projects/tripeese/images/tripeese-2.png
deleted file mode 100644
index b87c263..0000000
Binary files a/projects/tripeese/images/tripeese-2.png and /dev/null differ
diff --git a/projects/tripeese/images/tripeese-3.png b/projects/tripeese/images/tripeese-3.png
deleted file mode 100644
index 98e7166..0000000
Binary files a/projects/tripeese/images/tripeese-3.png and /dev/null differ
diff --git a/projects/tripeese/tripeese.mdx b/projects/tripeese/tripeese.mdx
deleted file mode 100644
index 6ca1b83..0000000
--- a/projects/tripeese/tripeese.mdx
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: Tripeese
-description: "Tripeese is one of the innovative idea we have worked on. Hire us for building ruby on rails projects. Technologies: Ruby On Rails, AngularJS, RSpec, Faye, RabbitMQ"
-meta:
-- Ruby on Rails solution provider
-- Ruby on Rails services
-- Angular solution provider
-- Angular services
-keywords:
-- ruby on rails development company in san francisco
-- ruby on rails dev shop in USA
-- angular development company in san francisco
-- angular dev shop in USA
-link: /tripeese
----
-
-## Group Trip Planning Portal
-Codebrahma helped Tripeese create a full fledged group flight + hotel booking system.
-
-## Challenges Faced:
-Tripeese approached us with an idea to build a real-time group travel planning portal. This would help a group of friends pick experiences vote on them, discuss about them and book flights and hotels.
-
-The founders wanted the entire experience to be in real-time (obviously non-realtime discussion suck, and hey we love doing real-time applications) — We should link to our blog on realtime.
-
-The founders also wanted a flawless flight + hotel booking system which enables a group of people to vote on options and book them
-
-* Accommodating search results from various providers simultaneously
-* A real time multi-user experience for group travel planning
-
-## Solution:
-Designed a service-oriented architecture that will expose tiny apps like flight booking, hotel booking, discussion system. These tiny apps are consumed by a Async Faye Server and the results are shown on the trip booking page. This provides a real time experience and facilitates a smooth discussion , voting, booking trip planning engine.
-
-SOA enables us to break a complex app into simpler smaller components. These smaller apps communicate via an API and are consumed by the main application using an evented server like Faye. This approach was used to built this multi-layered application.
-
-## Benefits:
-* RealTime platform for collaboratively planning trips
-* Choose and book the right flights and hotel that everyone like
-
-## Features
-
-### Interactive Planning
-
-
-_Empowering groups of friends to book experiences together_
-
-### Realtime Trip Planning
-
-
-_Travellers can form groups and invite their friends to a trip they create._
-
-### Social Features
-
-
-_Combining the social features familiar on Facebook with the ability to pick and purchase experiences in real-time, allowing groups to interact over actual search results._
-
-
-## Technologies:
- - Ruby on Rails
- - AngularJS
- - RabbitMQ
-
-## Testimonial:
-_“First thing that impressed me about working with Codebrahma is Agility with which things got done. The developers of Codebrahma are really talented, whether it is web, mobile, real time application you can rely on Codebrahma. Working with Codebrahma has been one of the best decisions we have made as a company. ” - Shirish Nilekar, CTO & Co Founder_
-
-
-
-
-
-
diff --git a/solutions/angular/angularjs.mdx b/solutions/angular/angularjs.mdx
deleted file mode 100644
index 51ef455..0000000
--- a/solutions/angular/angularjs.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: AngularJS Development Company | Hire AngularJS Developers
-description: Hire top notch AngularJS consultants in Bangalore, India for your projects. Codebrahma is one of the best AngularJS development companies in the world.
-keywords:
-- hire angularjs developers
-- angularjs developers for hire
-- angularjs development companies
-- angularjs development company
-- angularjs development company in bangalore
-link: /angularjs-development-company
----
-
-# AngularJS Development
-Get customized Single Page Applications (SPA) developed by **best AngularJS development company**
-
-Checkout the angular section of our [blog](/tag/angularjs)
-
-> [Contact Us](/contact) to work with the best AngularJS consultancy :)
-
-## Codebrahma For AngularJS Development
-#### We Create Fast, Flexible & Scalable AngularJS Applications
-While the Angular framework itself is designed for speed and flexibility, a lot of it depends on the implementation. We take special care to ensure that our applications are optimized to the highest standards.
-
-#### Experienced AngularJS Consultants
-We have been working on the AngularJS platform for more than 4 years now. With years of experience behind them, our Angular developers can come in and help you out of a sticky spot.
-
-#### Our AngularJS Apps Are Designed To Delight
-Our Angular applications render perfectly on every device and give your users a lag free experience. With a special focus on user experience, we ensure that your Angular app is designed to delight!
-
-#### Well Tested AngularJS Applications
-We create unit tests while developing Angular applications to ensure that your app is as close to being bug-free as possible, while covering most of the edge cases.
-
-
-### Gmail like Applications
-AngularJS helps you build single page applications like Gmail. No more waiting for page reloads. These applications are fast and sleek like desktop apps.
-
-### Realtime applications
-AngularJS makes it easy for you to build realtime applications as it has has two-way data binding. You can program it to update the webpage **without a page reload** as and when the data changes on the backend and is sent to the frontend
-
-### Scalable Applications
-We've built what is possibly one of the largest and most complex applications with AngularJS, and it scales beautifully, both from a development standpoint as well as from a utilization standpoint.
-
-### Leverage The Power of AngularJS
-AngularJS is an open source Javascript framework, largely maintained by the engineers at Google. This MVW based front end framework has quickly gained popularity, and has become the go-to framework for developing Single Page Applications.
-We are one of the earlier adopters of AngularJS and have successfully delivered multiple live applications. If you’re looking for an AngularJS development company, for consultation or hiring, your search ends here.
diff --git a/solutions/financial-software/finance.mdx b/solutions/financial-software/finance.mdx
deleted file mode 100644
index ad43647..0000000
--- a/solutions/financial-software/finance.mdx
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: Financial Software Development | Custom Banking & FinTech Software
-description: We create customized software solutions for Banking Institutions, Financial Services and FinTech companies. We specialize in financial software development.
-keywords:
-- Financial development services
-- financial software companies
-- banking software companies
-- money management software
-- financial services software companies
-- fintech
-link: /financial-software-development-company
----
-
-# Financial Software Development
-
-We creating high quality, robust, compliant software solutions for companies working in the Financial sector.
-
-Checkout the finance section of our [blog](/tag/financial)
-
-> [Contact Us](/contact) to work with the best Finance Software Development Company :)
-
-## We Create Software Solutions For
-1. P2P Lending
-2. Microfinance Institutions
-3. Digital & Mobile Payments
-4. Banking Applications
-
-
-## Our P2P lending projects
-
-### Harmoney
-[Harmoney](/harmoney) New Zealand's top peer to peer lending platform. It is one of the biggest platform connecting the investors with the borrowers. It was built on a web application framework Ruby on Rails
-
-
-### Industry Specific Experience
-We’ve done this before. Now we’re doing this even better. Our developers are quick to relate and understand our customer's needs given their industry experience.
-
-### Latest Technologies
-We create software powered by the topnotch technologies. We have a lot of experience in building applications in Angular, Node, React, Rails, Android, iOS.
-
-### Enterprise Development
-We design beautiful & engaging user experiences, develop clean front ends, build scalable applications and manage them on cloud.
-
-### Your Financial Software Partner
-Creating customized software solutions for the financial sector needs a partner who has a firm grasp on the intricacies of the financial world. Thanks to our years of experience in building software products for both Indian and as well as international financial companies, we know what it takes to make robust, solid and compliant financial software.
-Our financial software experts ensure that our FinTech solutions meet the highest international standards. Our quest for quality makes us a preferred financial software solutions partner.
-
-
diff --git a/solutions/nodejs/nodejs.mdx b/solutions/nodejs/nodejs.mdx
deleted file mode 100644
index c182df8..0000000
--- a/solutions/nodejs/nodejs.mdx
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Hire Node JS Developers - Node.JS Development Services
-description: Hire Node JS Developers - proficient to work according to your requirements at Codebrahma. We are expert in almost all popular Node JS development frameworks.
-keywords:
-- node.js development company
-- node js development companies
-- nodejs development company
-link: /node-js-development-company
----
-
-# NodeJS consultancy in San Francisco
-
-Checkout the nodejs section of our [blog](/tag/nodejs)
-
-> [Contact Us](/contact)
-
-The latest and best technology for building fast, scalable and Real time applications.
-
-## Sky High Performance
-Node.js uses the V8 javascript engine developed by google. The V8 engine is extremely fast. If you application does a lot of reading and writing to the internet or the filesystem, Nodejs is the fastest technology out there to build your application
-
-## Highly Scalable
-Node.js works on a principle called the event loop unlike other tradition web application frameworks and this is what helps make it extremely scalable for realtime apps. So Scale is not something you worry about when you choose NodeJS
-
-## RealTime
-Node.js excels in real time applications because of WebSockets. WebSockets are open 2-way communication channels between the client and the server. And this makes it really easy to build realtime applications like Games, Chat Engines, etc
-
-## Codebrahma: Node.js Development company
-1. We are expert in almost all popular Node JS development frameworks.
-2. We have provided development services in Express, Hapi, Sails for various companies.
-3. We have developed scalable Real time apps with Node JS.
-4. We have real experience with DBs like Mongo, Cassandra, Postgres etc.
-5. Being located in San Francisco, California USA you can get the best benefits of an on shore development services.
-6. Also we provide offshore development services based on Banglorem India.
diff --git a/solutions/progressive-web-app/progressive-web.mdx b/solutions/progressive-web-app/progressive-web.mdx
deleted file mode 100644
index 3080247..0000000
--- a/solutions/progressive-web-app/progressive-web.mdx
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: PWA e-commerce app development - Progressive Web Apps
-description: Looking for a mobile application then consider Progressive Web application. Its speed and offline capabilities makes your app stand among your competitors.
-keywords:
-- Progressive Web application
-- PWA e-commerce app development
-link: /serviceprogressive-web-applications
----
-
-# Progressive Web Application development company
-We are a leading mobile application developers who are experts in providing the best Progressive Web application development services. If you are looking for a Progressive web application development company your search ends here.
-
-## Benefits of PWA
-Checkout the PWA section of our [blog](/tag/pwa)
-
-> [Contact Us](/contact)
-
-### Increased Engagement, Superior Conversions
-Developing a Progressive Web App enables companies to remove friction and experience large increases in engagement and conversions.
-
-### Secure with Navigation just like an App
-Progressive Web Apps work full screen, live on the home page, and harness the full power of the device. To the consumer, a PWA is nearly indiscernible from a normal app, except for a few key enhancements.
-
-### Works in Low Quality Internet connections and offline
-Progressive Web Apps use less data than a Native App and work exceptionally well on slow and patchy internet connections.
-
-## PWA
-### Why Progressive Web Applications ?
-While there are thousands of apps on the Apple App Store and even more on the Google Play Store. Numbers show that 60% of Apps have never been downloaded or used.
-
-The App Store and the Play Store also cause major problems for developers who must work carefully to avoid breaking the rules. The App Store is also a not great for SEO (search engine optimization), because listings are largely excluded from Google search results. Progressive Web Apps circumvent the App Store , allowing users to find your Apps with normal URLs and Google search.
-
-### What is the future of Progressive Web applications ?
-The research and advisory firm Gartner has predicted that 20% of existing brands will abandon their native apps by 2019 due to “Progressive Web Apps”. Progressive Web Apps allow web developers to deliver web based applications that rival, or even out-perform Native web applications.
-A Progressive Web App uses modern web capabilities to deliver an app-like user experience. PWAs bring features we expect from native apps to the mobile browser experience.
-With a PWA, your users always have the latest version of your app. You never have to disturb them with updates. You can do continuous deployments to bring new features and fixes instantly.
-
-### Who are using Progressive Web Apps ?
-Many companies that have switched over to a PWA have seen a large increases in engagement and conversions.
-
-Twitter experienced a 65% increase in pages per session, 75% increase in tweets sent, and a 20% decrease in bounce rate.
-Alibaba saw 76% higher conversions across browsers, 14% more monthly active users on iOS (30% more on Android), and 4X higher interaction rate from
-The Flipkart Lite app has seen three times lower data usage than its native mobile predecessor and has generated a 40% higher re-engagement rate among first-time visitors. Its “Add to Homescreen” icon has generated a 70% higher conversion rate.
-
-There are many other top companies that have also made the switch to Progressive Web Apps like:
-
-- Alibaba
-- Fandango
-- Flipkart
-- Forbes
-- Jumia Travel
-- Lancôme
-- Ola
-- Twitter
-- Virgin America
-- The Washington Post
diff --git a/solutions/rails/rails.mdx b/solutions/rails/rails.mdx
deleted file mode 100644
index 2bef636..0000000
--- a/solutions/rails/rails.mdx
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Ruby on Rails Development Company in Bangalore
-description: Codebrahma provides Agile TDD Ruby on Rails (RoR) Development and Consulting. We are a custom ruby on rails development company in Bangalore.
-keywords:
-- ruby on rails
-- ruby on rails developers
-- rails consulting
-- ruby on rails developers bangalore
-link: /ruby-on-rails-developers-consulting-bangalore
-meta:
-- hi
----
-
-# Ruby on Rails
-
-The most productive way to build web applications, powers twitter, Zendesk, Airbnb, Shopify and more. Code that reads like English
-
-Checkout the rails section of our [blog](/tag/rails)
-
-> [Contact Us](/contact) to work with the best Ruby on Rails consultancy :)
-
-## Our Ruby on Rails Projects
-
-### Harmoney
-[Harmoney](/harmoney) New Zealand's top peer to peer lending platform. It is one of the biggest platform connecting the investors with the borrowers. It was built on a web application framework Ruby on Rails
-
-### Embibe
-[Embibe](/embibe) A Gamified Social Platform built on rails to help students ace their entrance examinations. We meet the challenge of setting up a website from scratch and it is a perfect example of innovation and creativity
-
-## Here are some of the best features of Ruby on Rails
-
-## Rapid Development
-50,000 gems to choose from. Gems are modular software packages that we can reuse. Common functionality like User Management, Social feeds etc are available as gems for us to reuse
-
-## Robust Framework
-Rails has one of the most vibrant open source communities which has evolved the framework over the last ten years into one of the most robust frameworks out there. RSpec, Capybara and other testing tools help us to build robust applications as well.
-
-## Standards
-Rails follows convention like REST , MVC which make your codebase fairly regularised. This helps you expand your team without acquiring technical debt.
-
diff --git a/solutions/react/images/Rippling-Hero-Image.png b/solutions/react/images/Rippling-Hero-Image.png
deleted file mode 100644
index eaa2e24..0000000
Binary files a/solutions/react/images/Rippling-Hero-Image.png and /dev/null differ
diff --git a/solutions/react/images/form-gif.gif b/solutions/react/images/form-gif.gif
deleted file mode 100644
index 8f0ed34..0000000
Binary files a/solutions/react/images/form-gif.gif and /dev/null differ
diff --git a/solutions/react/images/reactform.png b/solutions/react/images/reactform.png
deleted file mode 100644
index 45a6464..0000000
Binary files a/solutions/react/images/reactform.png and /dev/null differ
diff --git a/solutions/react/react-native.mdx b/solutions/react/react-native.mdx
deleted file mode 100644
index 26a3871..0000000
--- a/solutions/react/react-native.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: Hire React Native Developers - React Native Development Company
-description: Hire React Native developers - full-stack developers - prominent to craft custom React native apps at Codebrahma. We only implement what's best for your product.
-keywords:
-- react native development company
-- react native development company in san francisco
-- react native dev shop in USA
-link: /react-native-development-company
-meta:
-- react native development company in san francisco
-- react native dev shop in USA
----
-
-# React Native Development Company
-
-We take your design and api specs and give you a mobile and
-web frontend using react and react native
-
-We are a ReactJS development company primarily
-based on San Francisco California, USA.
-We have remote teams in Ukraine, India, Colombia.
-
-Since we have a lot of
-[premade](https://github.com/Codebrahma/React-Native-Restaurant-App)
-[reusable](https://github.com/Codebrahma/react-lite-ui/)
-[components](https://github.com/Codebrahma/cb-react-forms),
-we are typically **40% faster** than a inhouse solution
-
-Checkout the react native section of our [blog](/category/react-native)
-
-> [Contact Us](/contact)
-
-### Featured React Native Project
-
-#### Rippling: HR Automation Powerhouse developed On ReactJS
-[Rippling](/rippling) is a software tool to automate a bunch of things that companies need to do while hiring and offboarding employees. Right from contract management to hardware supplies, to running the payroll and leave management – Rippling does everything.
diff --git a/solutions/react/react.mdx b/solutions/react/react.mdx
deleted file mode 100644
index 3b36900..0000000
--- a/solutions/react/react.mdx
+++ /dev/null
@@ -1,84 +0,0 @@
----
-title: React JS Development Company - Hire ReactJS Developers
-description: Codebrahma - an eminent React JS development company offers you to hire ReactJS developers - experienced to craft highly secure, & fast mobile and web applications
-keywords:
-- React JS development Company
-- React JS development company in USA
-- react js consulting company
-- react js bay area consulting company
-- react js development company in san francisco
-- react js dev shop in USA
-link: /react-js-development
----
-
-# React JS Development Company
-
-We take your _design_ and _api_ specs and give you **a mobile and
-web** frontend using react & react native
-
-We primarily based out of San Francisco.
-We have remote teams in India, Nigeria, Ukraine.
-
-
-> [Contact Us](/contact)
-
-## Featured ReactJS project
-
-### Rippling: HR Automation Powerhouse developed On ReactJS
-[Rippling](/rippling) is a software tool to automate a bunch of things that companies need to do while hiring and offboarding employees. Right from contract management to hardware supplies, to running the payroll and leave management – Rippling does everything.
-
----
-[Here is our ReactJS Development process](/codebrahma-react-application)
-
-We have used the best libraries to develop React JS applications. Some of them are as follows.
-
-
-### Code Standard
-1. ES7 and ES6 Ready code
-2. Airbnb-eslint
-3. Flow js
-
-### State Management
-1. Redux
-2. Mobx
-
-### Bundler
-1. Webpack
-2. Gulp
-
-### Async Libraries
-1. redux-saga
-2. redux-observables
-3. redux-thunk
-
-### Testing Libraries
-1. Enzyme
-2. Mocha
-3. Chai
-4. Jasmine
-
-### Form Libraries
-1. Redux-forms
-2. Formsy-React
-
-We have the right tools to develop and develop production ready React JS applications with minimum possible bundle sizes.
-
-> For more info , take a look at our [blogs](/category/react)
-
----
-
-
-## RELIABLE REACT JS DEVELOPMENT SERVICES
-
-### Fast, modular and Bug free React JS development service
-We develop your application with atleast 30% faster than other development companies.
-
-### Javascript Lovers
-We specialise in servicing modern JavaScript based web & mobile applications. We are experts in developing applications in React.js, AngularJS, Node.js
-
-### Expert React JS Developers
-We have a set of skilful React JS developers who are updated with current React Eco System
-
-### Best React JS development Service history
-We have 10 + React projects delivered to clients in quick time
-
diff --git a/solutions/react/react_dev_process.mdx b/solutions/react/react_dev_process.mdx
deleted file mode 100644
index 4d4cbfa..0000000
--- a/solutions/react/react_dev_process.mdx
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: How we develop React applications
-description: Codebrahma's best reactjs based services provider in san francisco
-meta:
-- react js solution provider
-- react js services
-keywords:
-- react js development company in san francisco
-- react js dev shop in USA
-link: /codebrahma-react-application
----
-
-We use a set of UI components which are engineered for 70% of any requirement
-
-
-
-gives you
-
-
-
-## What are the benefits by using these react components ?
-
-### Out of the BOX UI
-- More than 50+ UI components
-- Handpick the best UI component
-- Get Out of Box UI / UX
-- Minimal rewrite if required
-- Well Tested functionalities
-
-### Automated form submission and styling
-- Automated Form submissions
-- Core functionalities are wrapped
-- Style your form at one place
-- Minimal rewrite if required
-- Utilizing the best libraries available
-
-### AUTOMATED FORM VALIDATION AND ERROR HANDLING
-- Validate using a simple word
-- Handle Errors in a common place
-- Mention Error Display once
-- Minimal rewrite if required
-- Validate literally any field
-
-### See in action
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-> [Contact US](/contact)
\ No newline at end of file
diff --git a/solutions/serverless/serverless.mdx b/solutions/serverless/serverless.mdx
deleted file mode 100644
index 539d8c4..0000000
--- a/solutions/serverless/serverless.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Serverless app development company
-description: Codebrahma is one of the early adopters of serverless technology. Irrespective of the cloud services, Codebrahma can build serverless apps which can solve your needs. You can have a look at ourServerless Grocery Purchasing App
-keywords:
-- serverless app
-- lambda services
-- dynamodb
-- serverless front end
-- serverless backend
-link: /serverless-app-development-company
----
-
-# Serverless app development company
-Serverless is a toolkit for deploying and operating serverless architectures. Focus on your application, not your infrastructure. We are an expert serverless application development company and we have great experience in building serverless apps that can scale to your needs.
-
-Codebrahma is one of the early adopters of serverless technology. Irrespective of the cloud services, Codebrahma can build serverless apps which can solve your needs. **Take a look at our**
-[Serverless Grocery Purchasing App](https://github.com/Codebrahma/serverless-grocery-app)
-
-
-Checkout the PWA section of our [blog](/tag/pwa)
-
-> [Contact Us](/contact/)
-
-
-
-## Benefits of Serverless
-
-### Pay as you use
-You just need to pay for the time your app is used
-
-### A framework that scales automatically
-With serverless you don't need to worry for scalability. Just think about your code and not how it runs.
-
-### Fast Deployment and zero maintenance
-Deployment is instantaneous and you don't need to worry about maintenance
-
-
-