Programming How-tos

Building Your First AWS Serverless Application? Here’s Everything You Need to Know

Building Your First AWS Serverless Application? Here’s Everything You Need to Know

A serverless architecture is a way to build and run applications and services without having to manage infrastructure. Your application still runs on servers, but all the servers management is done by AWS. You no longer have to provision, scale and maintain servers to run your applications, databases and storage systems. Services which are developed by developers who don’t let developers build application from scratch.

Why Serverless

  1. More focus on development rather than managing servers.

  2. Cost Effective.

  3. Application which scales automatically.

  4. Quick application setup.

The Ultimate Beginner’s Guide to Jupyter Notebooks

The Ultimate Beginner’s Guide to Jupyter Notebooks

Jupyter Notebooks offer a great way to write and iterate on your Python code. It is an incredibly powerful tool for interactively developing and presenting data science projects. A notebook integrates code and its output into a single document that combines visualisations, narrative text, mathematical equations, and other rich media. The intuitive workflow promotes iterative and rapid development, making notebooks an increasingly popular choice at the heart of contemporary data science, analysis, and increasingly science at large. Best of all, as part of the open source Project Jupyter, they are completely free.

Project Jupyter is the successor to an earlier project IPython Notebook, which was first published as a prototype in 2010. Jupyter Notebook is built off of IPython, an interactive way of running Python code in the terminal using the REPL model (Read-Eval-Print-Loop).

How to Make Asynchronous Calls in Redux Without Middlewares

How to Make Asynchronous Calls in Redux Without Middlewares

Redux has greatly helped in reducing the complexities of state management. Its one way data flow is easier to reason about and it also provides a powerful mechanism to include middlewares which can be chained together to do our biding. One of the most common use case for the middleware is to make async calls in the application. Different middlewares like redux-thunk, redux-sagas, redux-observable, etc are a few examples. All of these come with their own learning curve and are best suited for tackling different scenarios.

But what if our use-case is simple enough and we don’t want to have the added complexities that implementing a middleware brings? Can we somehow implement the most common use-case of making async API calls using only redux and javascript?

Learn How to Quickly Setup Istio Using GKE and its Applications

Learn How to Quickly Setup Istio Using GKE and its Applications

The Istio’s website says “An open platform to connect, manage, and secure microservices”.

As the network of microservices known as service mesh grows in size and complexity, it can become tougher to understand and manage. Its requirements can include discovery, load balancing, failure recovery, metrics, and monitoring, and often more complex operational requirements such as A/B testing, canary releases, rate limiting, access control, and end-to-end authentication. Istio claims that it provides complete end to end solution to these problems.

Understanding Node.js Async Flows: Parallel, Serial, Waterfall and Queues

Understanding Node.js Async Flows: Parallel, Serial, Waterfall and Queues

Promises in Javascript has been around since a long time now. It helped solve the problem of callback hell. But as soon as the requirements get complicated with control flows, promises start getting unmanageable and harder to work with.

This is where async flows come to the rescue. In this blog, lets talk about the various async flows used frequently over raw promises and callbacks.

Taking Amazon's Elastic Kubernetes Service for a Spin

Taking Amazon's Elastic Kubernetes Service for a Spin

With the introduction of Elastic Kubernetes service at re: Invent last year, AWS finally threw their hat in the ever booming space of managed Kubernetes services. In this blog post, we will learn the basic concepts of EKS, launch an EKS cluster and also deploy a multi-tier application on it.

Creating GraphQL APIs Using Elixir Phoenix and Absinthe

Creating GraphQL APIs Using Elixir Phoenix and Absinthe

GraphQL is a new hype in the Field of API technologies. We have been constructing and using REST API's for quite some time now and started hearing about GraphQL recently. GraphQL is usually described as a frontend-directed API technology as it allows front-end developers to request data in a more simpler way than ever before. The objective of this query language is to formulate client applications formed on an instinctive and adjustable format, for portraying their data prerequisites as well as interactions.

The Phoenix Framework is running on Elixir, which is built on top of Erlang. Elixir core strength is scaling and concurrency. Phoenix is a powerful and productive web framework that does not compromise speed and maintainability. Phoenix comes in with built-in support for web sockets, enabling you to build real-time apps.

In this blog we will explore how to build GraphQL APis for Phoenix/Elixir using Absinthe.

Extending Kubernetes APIs with Custom Resource Definitions (CRDs)

Extending Kubernetes APIs with Custom Resource Definitions (CRDs)

Custom resources definition (CRD) is a powerful feature introduced in Kubernetes 1.7 which enables users to add their own/custom objects to the Kubernetes cluster and use it like any other native Kubernetes objects. In this blog post, we will see how we can add a custom resource to a Kubernetes cluster using the command line as well as using the Golang client library thus also learning how to programmatically interact with a Kubernetes cluster.

As per this article, Custom Resource Definitions are part of a wider effort to refine and enhance Kubernetes as an extensible application platform, factoring everything but the bare essentials out of “core” Kubernetes in favour of modular and maintainable extensibility mechanisms.

In this blog we understand how one can go about writing their own CRDs with a hand-on demonstration.

An Introduction to Asynchronous Programming in Python

An Introduction to Asynchronous Programming in Python

Asynchronous programming is a type of parallel programming in which a unit of work is allowed to run separately from the primary application thread. Asynchronous programming has been gaining a lot of attention in the past few years, and for good reason. Typically Node.js is associated with Asynchronous programming. Although, nowadays other languages including Python do support Asynchronous programming.

This blog acts an introduction to asynchronous programming in Python and explores different ways in which to achieve that.

Deploy Serverless, Event-driven Python Applications Using Zappa

Deploy Serverless, Event-driven Python Applications Using Zappa

Zappa makes it super easy to build and deploy server-less, event-driven Python applications (including, but not limited to, WSGI web apps) on AWS Lambda + API Gateway. Think of it as "serverless" web hosting for your Python apps. That means infinite scalingzero downtimezero maintenance - and at a fraction of the cost of your current deployments!

This blog acts a simple tutorial to deploy a sample Django/Python application using Zappa.

Exploring OpenAI Gym: A Platform for Reinforcement Learning Algorithms

Exploring OpenAI Gym: A Platform for Reinforcement Learning Algorithms

According to the OpenAI Gym GitHub repository “OpenAI Gym is a toolkit for developing and comparing reinforcement learning algorithms. This is the gym open-source library, which gives you access to a standardized set of environments.”

Open AI Gym has an environment-agent arrangement. It simply means Gym gives you access to an “agent” which can perform specific actions in an “environment”. In return, it gets the observation and reward as a consequence of performing a particular action in the environment.

Lessons Learnt While Building an ETL Pipeline for MongoDB & Amazon Redshift Using Apache Airflow

Lessons Learnt While Building an ETL Pipeline for MongoDB & Amazon Redshift Using Apache Airflow

Recently, the author was involved in building a custom ETL(Extract-Transform-Load) pipeline using Apache Airflow which included extracting data from MongoDB collections and putting it into Amazon Redshift tables. 

Each ETL pipeline comes with a specific business requirement around processing data which is hard to be achieved using off-the-shelf ETL solutions. This is why a majority of ETL solutions are built manually, from scratch. In this blog, I am going to talk about my learnings around building an optimized, efficient, near real-time and fault tolerant custom ETL solution using Apache Airflow which involved moving data from MongoDB to Redshift.